From d1caf97d153855db4ba0c45b3f1569938d42fdda Mon Sep 17 00:00:00 2001 From: Boris Kovalskii <36034823+JustYay@users.noreply.github.com> Date: Thu, 9 Oct 2025 03:16:11 +0000 Subject: [PATCH] =?UTF-8?q?FIX=20"=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D0=BE=D1=82=D0=B2=D0=B5?= =?UTF-8?q?=D1=82=D1=8B=20=D0=B1=D0=BE=D1=82=D0=B0=20=D1=87=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D1=85"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FIX "Добавление и ответы бота чатах" при обязательной подписке: Теперь бот будет: - Проверять подписку только в личных сообщениях - Игнорировать все сообщения из групповых чатов - Игнорировать анонимные сообщения от имени сообщества - Игнорировать сообщения от других ботов --- middlewares/subscription.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/middlewares/subscription.py b/middlewares/subscription.py index 658a1fcc..914e6196 100644 --- a/middlewares/subscription.py +++ b/middlewares/subscription.py @@ -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"):