Бот блокирует комментарии к публикациям Telegram канала
Есть телеграм-канал с чатом. Бот модерирует чат тг-канал - удаляет комментарии с запрещенными словами. Примерно три недели назад появилась проблема: иногда (т.е. не каждый раз) получается так, что при размещении публикации исчезает возможность комментирования текста публикации. Причем, возможность комментирования исчезает через 20 секунд после размещения публикации. Если же бот отключить, то проблем с комментариями нет, они не пропадают. В чем может быть проблема, с кодом бота или Telegram?
Код бота элементарный:
import logging
from aiogram import Bot, Dispatcher, executor, types
import config as cfg
logging.basicConfig(level=logging.INFO)
bot = Bot(token=cfg.TOKEN)
dp = Dispatcher(bot)
async def mess_handler(message: types.Message):
text = message.text.lower()
if str(message.from_user.id) != cfg.ADMIN_ID:
for word in cfg.WORDS:
if word in text:
await message.delete()
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
Ответы (1 шт):
Когда пост пересылается из канала в привязанную группу для комментариев, у объекта message
есть атрибут is_automatic_forward
.
Optional. True, if the message is a channel post that was automatically forwarded to the connected discussion group
Проверяйте его наличие, примерно так:
@dp.message()
async def echo_message(message: types.Message):
text = message.text.lower()
if message.from_user.id not in [cfg.ADMIN_ID, cfg.CHANNEL_ID, cfg.CHAT_ID] or message.is_automatic_forward!=True:
for word in cfg.WORDS:
if word in text:
await message.delete()
Добавьте проверку message.is_automatic_forward!=True
в другие хендлеры.
А вообще, объедините, для чего городить одно и тоже?
@dp.message()
@dp.edited_message()
async def echo_message(message: types.Message):
text = message.text.lower()
if message.from_user.id not in [cfg.ADMIN_ID, cfg.CHANNEL_ID, cfg.CHAT_ID] or message.is_automatic_forward!=True:
for word in cfg.WORDS:
if word in text:
await message.delete()