From 2333e05f28346407076e8734c155ee6206c3b83c Mon Sep 17 00:00:00 2001 From: Kirill Kirilenko Date: Wed, 20 Aug 2025 16:29:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=BE=D1=82=D1=8B=20=D0=BD=D0=B5=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F=D1=8E=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=B2=20=D0=91=D0=94.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/bot.py b/bot.py index db25b5b..a3b215a 100644 --- a/bot.py +++ b/bot.py @@ -7,7 +7,6 @@ from vkbottle.bot import Bot, Message import config from config import db_load, db_save, db_print - db_load() db_save() bot = Bot(config.DB['api_token']) @@ -39,6 +38,8 @@ async def stats_handler(message: Message): chat_members = await bot.api.messages.get_conversation_members(peer_id=message.peer_id, extended=False) for member in chat_members.items: + if member.member_id < 0: + continue member_id = str(member.member_id) if member_id not in config.DB['chats'][chat_id]['users']: config.DB['chats'][chat_id]['users'][member_id] = { @@ -68,7 +69,7 @@ async def stats_handler(message: Message): if top[i]['messages_today'] == 0: break info = await get_user_info(top[i]['id']) - response += '{}. {} {} - {}\n'.format(i+1, info.first_name, info.last_name, top[i]['messages_today']) + response += '{}. {} {} - {}\n'.format(i + 1, info.first_name, info.last_name, top[i]['messages_today']) i = i + 1 top = sorted(chat_users, key=lambda item: item['messages_month'], reverse=True) @@ -78,7 +79,7 @@ async def stats_handler(message: Message): if top[i]['messages_month'] == 0: break info = await get_user_info(top[i]['id']) - response += '{}. {} {} - {}\n'.format(i+1, info.first_name, info.last_name, top[i]['messages_month']) + response += '{}. {} {} - {}\n'.format(i + 1, info.first_name, info.last_name, top[i]['messages_month']) i = i + 1 await message.answer(response) @@ -90,7 +91,8 @@ async def silent_handler(message: Message): chat_users = [] for user_id in config.DB['chats'][chat_id]['users'].keys(): - flat_user = {**{'id': user_id}, **{'last_message': config.DB['chats'][chat_id]['users'][user_id]['last_message']}} + flat_user = {**{'id': user_id}, + **{'last_message': config.DB['chats'][chat_id]['users'][user_id]['last_message']}} chat_users.append(flat_user) top = sorted(chat_users, key=lambda item: item['last_message']) @@ -100,19 +102,24 @@ async def silent_handler(message: Message): for i in range(0, len(top)): if top[i]['last_message'] == 0: info = await get_user_info(top[i]['id']) + if info is None: + continue response += '{}. {} {} - никогда\n'.format(i + 1, info.first_name, info.last_name) else: days_silent = round((now - top[i]['last_message']) / 3600 / 24) if days_silent < 14: break info = await get_user_info(top[i]['id']) - response += '{}. {} {} - {} дней\n'.format(i+1, info.first_name, info.last_name, days_silent) + response += '{}. {} {} - {} дней\n'.format(i + 1, info.first_name, info.last_name, days_silent) await message.answer(response) @bot.on.chat_message() async def any_message_handler(message: Message): + if message.from_id < 0: + return + chat_id = str(message.peer_id) user_id = str(message.from_id) if chat_id not in config.DB['chats']: