FIX "Добавление и ответы бота чатах"

FIX "Добавление и ответы бота чатах" при обязательной подписке:

Теперь бот будет:
- Проверять подписку только в личных сообщениях
- Игнорировать все сообщения из групповых чатов
- Игнорировать анонимные сообщения от имени сообщества
- Игнорировать сообщения от других ботов
This commit is contained in:
Boris Kovalskii
2025-10-09 03:16:11 +00:00
committed by GitHub
parent 15e9982530
commit 3d7c76b113
+14 -6
View File
@@ -29,24 +29,32 @@ class SubscriptionMiddleware(BaseMiddleware):
tg_id = None
message = None
from_user = None
chat_type = None
if event.message:
if event.message.chat.type != ChatType.PRIVATE:
return await handler(event, data)
if not event.message.from_user:
return await handler(event, data)
if event.message.from_user.is_bot:
return await handler(event, data)
tg_id = event.message.from_user.id
message = event.message
from_user = event.message.from_user
chat_type = event.message.chat.type
elif event.callback_query:
if event.callback_query.message and event.callback_query.message.chat.type != ChatType.PRIVATE:
return await handler(event, data)
if not event.callback_query.from_user:
return await handler(event, data)
if event.callback_query.from_user.is_bot:
return await handler(event, data)
tg_id = event.callback_query.from_user.id
message = event.callback_query.message
from_user = event.callback_query.from_user
chat_type = event.callback_query.message.chat.type if event.callback_query.message else None
else:
return await handler(event, data)
if chat_type and chat_type != ChatType.PRIVATE:
return await handler(event, data)
try:
member = await bot.get_chat_member(CHANNEL_ID, tg_id)
if member.status not in ("member", "administrator", "creator"):