使用 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()
我想要一个不断检查电报频道的程序,如果发送了一条新消息,它应该将该消息作为输入来执行其他操作。
我当前的问题是让程序始终 运行,并在发送消息时实际执行某些操作。 这些消息将进入我所在的 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()