Discord Bot 错误:无法向刚启动的协程发送非无值

Posted

技术标签:

【中文标题】Discord Bot 错误:无法向刚启动的协程发送非无值【英文标题】:Discord Bot Error: can't send non-None value to a just-started coroutine 【发布时间】:2021-07-26 04:09:18 【问题描述】:

我是 Discord API 的新手。

我正在尝试使用机器人向我的不和谐频道发送消息。我想运行函数“scheduled_run”,以便将消息发送到频道。

下面的代码应该将“剩余”发送到通道,但我收到错误“无法将非无值发送到刚刚启动的协程”

async def get_channel(id):
  return 

async def scheduled_run():
  channel = get_channel(83863944137526xxxx)
  await channel.send("Remainder")

if __name__ == "__main__":
  loop = get_event_loop()
  loop.run_until_complete(scheduled_run())

错误: 回溯(最近一次通话最后): 文件“main.py”,第 83 行,在 loop.run_until_complete(scheduled_run()) 文件“/usr/lib/python3.8/asyncio/base_events.py”,第 616 行,在 run_until_complete 返回future.result() schedule_run 中的文件“main.py”,第 78 行 等待频道。发送(味精) TypeError: can't send non-None value to a just-started coroutine

是否可以在没有用户回复的情况下发送机器人消息?请更正我的代码

【问题讨论】:

您在调用get_channel 之前缺少await。由于调用async def 创建的协程对象恰好有一个名为send 的方法(与discord 完全无关),这个错误有点神秘。 【参考方案1】:

您必须直接从客户端获取频道:

channel = client.get_channel(83863944137526xxxx)
await channel.send("Remainder")

【讨论】:

client.get_channel 返回 null。请建议其他方式 您定义的不和谐客户端或机器人是什么?就是<name>.get_channel(83863944137526xxxx)

以上是关于Discord Bot 错误:无法向刚启动的协程发送非无值的主要内容,如果未能解决你的问题,请参考以下文章

Discord bot 无法使用线程,卡住错误:必需的位置参数:'ctx'

Heroku discord bot 托管错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT

Discord Bot 无法识别命令名称

“无法访问主线程上的数据库,因为它可能会长时间锁定 UI。”我的协程错误

可怕!RxHttp2.0重大更新!协程发请求,原来如此简单

无法在heroku上托管discord bot(js)