【问题标题】:Telethon issue: RuntimeWarning: coroutine 'send_message' was never awaitedTelethon 问题:RuntimeWarning:从未等待协程“send_message”
【发布时间】:2020-06-12 16:05:21
【问题描述】:

请帮我解决我的代码中的一个错误:

from telethon import TelegramClient, sync, events

#Ids
api_id = 99999
api_hash = 'secret_word'

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

@client.on(events.NewMessage(chats=('user1')))
async def normal_handler(event):
    s_user_id=event.message.to_dict()['from_id']
    if s_user_id != 99999999:
        client.send_message('user3', 'Test')



@client.on(events.NewMessage(chats=('user2')))
async def normal_handler(event):
    s_user_id=event.message.to_dict()['from_id']
    if s_user_id != 99999999:
        client.send_message('user3', 'Test')

client.start()

client.run_until_disconnected()

当 user1 或 user2 向我发送消息时,我的程序出现错误:

RuntimeWarning:从未等待协程“send_message”
client.send_message('user3', 'Test')

【问题讨论】:

  • 作为旁注,event.message.to_dict()['from_id']难以置信浪费。您只需输入event.from_id
  • 谢谢。会使用它。知道如何解决我的问题吗?
  • 这个问题已经在 StackOverflow 上解决过很多次了:stackoverflow.com/search?q=coroutine+was+never+awaited
  • 我尝试将 client.send_message('user3', 'Test') 添加到 async def normal_handler(event): 中,但它不起作用

标签: python-3.x telethon


【解决方案1】:

用下一个代码修复:

from telethon import TelegramClient, sync, events

#Ids
api_id = 99999
api_hash = 'secret_word'

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

@client.on(events.NewMessage(chats=('user1')))
async def normal_handler(event):
    s_user_id=event.message.to_dict()['from_id']

    await client.send_message('user3', 'Test')

    if s_user_id != 99999999:
        client.send_message('user3', 'Test')



@client.on(events.NewMessage(chats=('user2')))
async def normal_handler(event):

    s_user_id=event.message.to_dict()['from_id']

    await client.send_message('user3', 'Test')

    if s_user_id != 99999999:
        client.send_message('user3', 'Test')

client.start()

client.run_until_disconnected()

但是现在,即使 s_user_id = 99999999,client.send_message 也能正常工作。 如果 s_user_id != 99999999,代码会以某种方式忽略:

【讨论】:

  • 你有一个正确的send_message 调用任何条件,这总是有效的。条件中的send_message 缺少await,这将不起作用。
  • 那么,如果我将 await client.send_message('user3', 'Test') 放入它是否可以工作?
猜你喜欢
  • 2018-10-26
  • 2021-10-22
  • 2019-12-15
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2020-10-10
相关资源
最近更新 更多