使用 telethon 从电报中的新消息中获取文本

Using telethon to get text from a new message in telegram

我想要一个不断检查电报频道的程序,如果发送了一条新消息,它应该将该消息作为输入来执行其他操作。

我当前的问题是让程序始终 运行,并在发送消息时实际执行某些操作。 这些消息将进入我所在的 public 频道,我正在使用 https://github.com/amiryousefi/telegram-analysis/blob/master/ChannelMessages.py 的一部分进行登录。登录工作正常,但似乎根本收不到新消息。

我目前使用的代码是:

     while True:
        @client.on(events.NewMessage(chats = [123123]))
        async def handler(event):
            print("Event Occured")
            print(event.message.message)
        sleep(2)

我尝试使用 while true 循环作为让程序不断检查的方法,并且我尝试使其特定于聊天以查看是否有帮助,但目前发送新消息时没有任何反应到那个频道。

while 循环进入就好了,但永远不会进入事件。当前的打印语句在那里用于测试,但没有起作用。

发送的消息是由连接到 webhook 的机器人发送的,我正在使用自己的帐户登录,两者都在频道中。

您不需要将处理程序放在 while 循环中。当您的脚本调用 client.on(...) 方法时,这会自动将函数添加为客户端的处理程序。这意味着内部 telethon 将检查匹配 NewMessage(chats = [123123] 的事件并在必要时触发该功能。这将在客户端连接并接收更新时发生。

您的代码应如下所示:

from telethon import TelegramClient, events

client = TelegramClient('anon', api_id, api_hash)

@client.on(events.NewMessage(chats = [123123]))
async def handler(event):
    print("Event Occured")
    print(event.raw_text)

client.start()
client.run_until_disconnected()