Как получить новое сообщение, полученное с телеграммного канала с помощью телетона - PullRequest
0 голосов
/ 12 апреля 2020

Я использовал указанный здесь код для получения нового сообщения от пользователя, но он не работает, когда новое сообщение поступает в телеграммный канал.

@bot.on(events.NewMessage)
async def my_event_handler(event):
    print(event.stringify())

Настройка events.NewMessage(chat='chat') или events.NewMessage(chat='channel') не сработала.

Как бот-телеграмма может получить новое сообщение с телеграммным каналом?

1 Ответ

1 голос
/ 12 апреля 2020

Чтобы бот принимал все сообщения, сначала необходимо настроить его в @ BotFather , отключив конфиденциальность бота:

  1. / start
  2. / mybots
  3. (выберите бота)
  4. Настройки бота
  5. Групповая конфиденциальность
  6. Отключите

После этого добавьте бот как администратор вашего канала вещания (они не могут быть нормальными членами здесь). Ваш код должен выглядеть следующим образом:

CHANNEL = ...  # id, username or invite link of the channel

# the first parameter is the `chats=`, you can use a named argument if you want
@bot.on(events.NewMessage(CHANNEL))
async def my_event_handler(event):
    print(event.stringify())

Если вы хотите обрабатывать сообщения от всех широковещательных каналов вашей группы, используйте более продвинутый фильтр:

# megagroups (supergroups) are channels too, so we need `not e.is_group`
# this lambda takes the event, which has these boolean properties
@bot.on(events.NewMessage(func=lambda e: e.is_channel and not e.is_group))
async def my_event_handler(event):
    print(event.stringify())
...