【发布时间】:2022-09-27 22:48:25
【问题描述】:
每次将消息发送到通道时,都会调用处理函数,因为 python 装饰器。 我想同时接收消息并将它们打印出来。这就是我想象的程序应该是什么样子。
但它不起作用,因为事件没有传递给 main 中的处理函数。 当@client 装饰器控制消息并阻止我在其他函数中使用处理函数并传递 tokenData 时,我该如何异步执行此操作
from telethon import TelegramClient, events
client = TelegramClient(username, api_id, api_hash)
client.start()
channel = \'https://t.me/DEXTNewPairsBotBSC\'
@client.on(events.NewMessage(chats=channel))
async def handler(event):
# tokenData = event
tokenData = event.message.message
msg.append(tokenData)
await asyncio.sleep(2)
return tokenData
async def dumpIt():
await asyncio.sleep(2)
return msg[0]
async def main():
task1 = asyncio.create_task(handler(event))
task2 = asyncio.create_task(dumpIt())
await asyncio.wait([task1,task2])
client.loop.run_until_complete(main())
-
最好直接在
handler()中运行dumpIt(tokenData)- 这是在处理程序收到新消息时运行dumpIt的唯一方法
标签: python asynchronous async-await python-asyncio telethon