Боты не добавляются в БД.

This commit is contained in:
Kirill Kirilenko 2025-08-20 16:29:59 +03:00
parent ed82166bdc
commit 2333e05f28

17
bot.py
View file

@ -7,7 +7,6 @@ from vkbottle.bot import Bot, Message
import config import config
from config import db_load, db_save, db_print from config import db_load, db_save, db_print
db_load() db_load()
db_save() db_save()
bot = Bot(config.DB['api_token']) 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) chat_members = await bot.api.messages.get_conversation_members(peer_id=message.peer_id, extended=False)
for member in chat_members.items: for member in chat_members.items:
if member.member_id < 0:
continue
member_id = str(member.member_id) member_id = str(member.member_id)
if member_id not in config.DB['chats'][chat_id]['users']: if member_id not in config.DB['chats'][chat_id]['users']:
config.DB['chats'][chat_id]['users'][member_id] = { config.DB['chats'][chat_id]['users'][member_id] = {
@ -68,7 +69,7 @@ async def stats_handler(message: Message):
if top[i]['messages_today'] == 0: if top[i]['messages_today'] == 0:
break break
info = await get_user_info(top[i]['id']) 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 i = i + 1
top = sorted(chat_users, key=lambda item: item['messages_month'], reverse=True) 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: if top[i]['messages_month'] == 0:
break break
info = await get_user_info(top[i]['id']) 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 i = i + 1
await message.answer(response) await message.answer(response)
@ -90,7 +91,8 @@ async def silent_handler(message: Message):
chat_users = [] chat_users = []
for user_id in config.DB['chats'][chat_id]['users'].keys(): 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) chat_users.append(flat_user)
top = sorted(chat_users, key=lambda item: item['last_message']) 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)): for i in range(0, len(top)):
if top[i]['last_message'] == 0: if top[i]['last_message'] == 0:
info = await get_user_info(top[i]['id']) info = await get_user_info(top[i]['id'])
if info is None:
continue
response += '{}. {} {} - никогда\n'.format(i + 1, info.first_name, info.last_name) response += '{}. {} {} - никогда\n'.format(i + 1, info.first_name, info.last_name)
else: else:
days_silent = round((now - top[i]['last_message']) / 3600 / 24) days_silent = round((now - top[i]['last_message']) / 3600 / 24)
if days_silent < 14: if days_silent < 14:
break break
info = await get_user_info(top[i]['id']) 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) await message.answer(response)
@bot.on.chat_message() @bot.on.chat_message()
async def any_message_handler(message: Message): async def any_message_handler(message: Message):
if message.from_id < 0:
return
chat_id = str(message.peer_id) chat_id = str(message.peer_id)
user_id = str(message.from_id) user_id = str(message.from_id)
if chat_id not in config.DB['chats']: if chat_id not in config.DB['chats']: