Бот блокирует комментарии к публикациям 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 шт):

Автор решения: CausonQ

Когда пост пересылается из канала в привязанную группу для комментариев, у объекта 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()
→ Ссылка