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']: