Задать вопрос
@leham1

Почему telegram бот не видит сообщения?

Здравствуйте.
Я создал в telegram бота "bot_1", в него приходят сообщения от конкретного сервиса "service_1".

Сейчас мне нужно фильтровать сообщения от 'service_1' (если в сообщении содержится текст "text_1", тогда надо удалить это сообщение).

Я попытался сделать так:
import logging

from aiogram import Bot, Dispatcher, executor, types

API_TOKEN = 'token' # токен бота для отправки авито объявлений

# Configure logging
logging.basicConfig(level=logging.INFO)

# Initialize bot and dispatcher
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)

# удалить конкретные сообщения (содержащие в тексе "плохое слово")
@dp.message_handler()
async def filter_messages(message: types.Message):
    if 'text_1' in message.text:
        # remove massage
        await  message.delete()


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

Создал бота "bot_2" на python через библиотеку 'aiogram' (она для управления ботами).
И она работает правильно. Когда я отправляю сообщение, в котором содержится текст "text_1", она его удаляет.
Но проблема в том, что она не видит когда приходит сообщение от "service_1", и следовательно не удаляет его.

Вопрос: как сделать чтобы "bot_2" увидел сообщения от 'service_1'?
  • Вопрос задан
  • 2869 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
drygdryg
@drygdryg
Python-разработчик
Telegram Bot API не позволяет ботам читать сообщения, отправленные другими ботами.
Обойти это ограничение можно, используя MTProto API для ботов. Для Python для работы с MTProto от имени бота есть библиотеки Pyrogram и Telethon.
Подробнее о том, в чём различие Bot API и MTProto API, как использовать ботов с MTProto API, читайте в этой статье: https://habr.com/ru/post/543676/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы