阅读了以下问题:如何将电报通道中的消息保存为变量
我需要执行相同的操作,但是从NewMessage事件中,将消息的内容存储在变量中。
但是,event.text和event.raw_test似乎都不能存储在变量中
如下代码:
import asyncio
from telethon import TelegramClient, events
import logging
logging.basicConfig(format='[%(levelname) 5s/%(asctime)s] %(name)s: %(message)s',
level=logging.WARNING)
client = TelegramClient('session', 'api_id', 'api_hash')
client.start()
channel = 'xxx'
async def main():
@client.on(events.NewMessage(chats=channel))
async def handler(event):
await print (event.text)
await client.run_until_disconnected()
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
可以打印新的频道消息,但是在打印的消息中却给了我两个错误:
但是当我改变
await print (event.text)
为了
msg = await event.text print(msg)
我遇到了同样的两个错误,但是这次没有打印...并且我需要将消息中的文本另存为变量,以继续执行脚本。
在函数之前声明变量msg并使它在其中成为全局变量也无效。
我不知道还有什么尝试。提前致谢。
在马拉松式节目文档盖这个不错(适合你的使用情况):
from telethon import TelegramClient, events
client = TelegramClient('session', api_id, api_hash)
channel = "xxx"
@client.on(events.NewMessage(chats=channel))
async def my_event_handler(event):
print(event.text) # this doesn't need an "await"
client.start()
client.run_until_disconnected()
还要注意,我没有将事件处理程序放在另一个函数中,并且run_until_disconnected()调用不会调用任何函数,也不会将其合并在一个函数中。您甚至不需要导入asyncio
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句