Events Telethon-将电报信道消息保存为来自NewMessage事件的变量
阅读了以下问题: 我也需要这样做,但是从一个NewMessage事件开始,将消息的内容存储在一个变量中 但是,event.text和event.raw_测试似乎都不能存储在变量中 以下代码:Events Telethon-将电报信道消息保存为来自NewMessage事件的变量,events,async-await,python-asyncio,telegram,telethon,Events,Async Await,Python Asyncio,Telegram,Telethon,阅读了以下问题: 我也需要这样做,但是从一个NewMessage事件开始,将消息的内容存储在一个变量中 但是,event.text和event.raw_测试似乎都不能存储在变量中 以下代码: import asyncio from telethon import TelegramClient, events import logging logging.basicConfig(format='[%(levelname) 5s/%(asctime)s] %(name)s: %(message)
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())
可以打印新频道消息,但打印消息时会出现两个错误:
- 等待回调(事件)
- TypeError:对象非类型不能在“wait”表达式中使用
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'
@client.on(events.NewMessage(chats=channel))
async def handler(event):
print(event.message.message)
client.run_until_disconnected()
您不需要用另一个异步函数包装侦听器。而且,您不需要等待打印,只需使用普通打印即可
您不需要用另一个异步函数包装侦听器。而且,您不需要等待打印,只需使用普通打印即可,它可以很好地覆盖这一点(适合您的用例):
来自telethon导入电报客户端,事件
客户端=电报客户端(“会话”、api\u id、api\u哈希)
频道=“xxx”
@client.on(events.NewMessage(chats=channel))
异步定义我的事件处理程序(事件):
打印(event.text)#这不需要“等待”
client.start()
client.run_直到_断开()
还要注意,我没有将事件处理程序放在另一个函数中,run_until_disconnected()调用不会调用任何函数,也不会在一个函数中调用。您甚至不需要导入asyncio,它可以很好地解决这一问题(适合您的用例):
来自telethon导入电报客户端,事件
客户端=电报客户端(“会话”、api\u id、api\u哈希)
频道=“xxx”
@client.on(events.NewMessage(chats=channel))
异步定义我的事件处理程序(事件):
打印(event.text)#这不需要“等待”
client.start()
client.run_直到_断开()
还要注意,我没有将事件处理程序放在另一个函数中,run_until_disconnected()调用不会调用任何函数,也不会在一个函数中调用。您甚至不需要导入asyncio您不必等待也不必等待事件.文本,只需使用打印(事件.文本)您不必等待也不必等待事件.文本,只需使用打印(事件.文本)
event.message.message
是不必要的,您可以使用event.text
这两个选项似乎都有效。event.message.message和event.text都存储在一个变量中,现在我不再等待它们了。谢谢event.message.message
是不必要的,您可以使用event.text
这两个选项似乎都有效。event.message.message和event.text都存储在一个变量中,现在我不再等待它们了。谢谢
msg = await event.text
print(msg)
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'
@client.on(events.NewMessage(chats=channel))
async def handler(event):
print(event.message.message)
client.run_until_disconnected()