如何使用Telethon获取来自电报频道的新消息

时间:2020-04-12 04:15:03

标签: python telethon

我使用了给定的here代码来接收来自用户的新消息,但是当新消息到达电报频道时,该代码不起作用。

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

设置events.NewMessage(chat='chat')events.NewMessage(chat='channel')无效。

电报机器人如何从电报频道获取新消息事件?

2 个答案:

答案 0 :(得分:2)

要使漫游器接收所有消息,您首先需要在@BotFather中通过禁用漫游器隐私来对其进行配置:

  1. /开始
  2. / mybots
  3. (选择一个机器人)
  4. 启动设置
  5. 组隐私
  6. 关闭

完成后,将bot作为管理员添加到您的广播频道中(这里不能是普通会员)。您的代码应如下所示:

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())

答案 1 :(得分:0)

如果你只想获取消息文本而不是整个json,你可以试试这个

print(event.message.message)