import discord
import asyncio
client = discord.Client()
@client.event
async def on_ready():
print("I'm ready.")
async def send(message):
await client.send_message(client.get_channel("123456789"), message)
client.run("token")
loop = asyncio.get_event_loop()
loop.run_until_complete(send("hello"))
你好,我想做一个GUI。当有人输入他的名字并按“确定”时,我的不和谐机器人应该会发送一条消息。基本上我以为我用它的名字来称呼异步,但没有用。然后我做了一个事件循环。使用 print(),但机器人不发送消息,所以我认为它还没有准备好,当我把 wait_until_ready() 放在那里时它什么也没执行,所以我想我必须把 client.run(“token “) 在事件循环之前,也没有用。
你们能帮帮我吗? :)
原文由 mauexe 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的代码不工作的原因是因为
client.run
正在阻塞,这意味着它之后什么都不会执行。这意味着您的loop
将永远无法访问。要解决此问题,请使用
client.loop.create_task
。discord.py
的 github 有一个后台任务的例子,可以 在这里 找到。您应该可以将其用作参考。目前,该任务每分钟向给定频道发送一条消息,但您可以轻松修改它以等待特定操作。新
discord.py
版本较旧
discord.py
版本