我正在使用discord.py库在Python 3.6中开发Discord机器人,但在尝试从我创建的线程向特定通道发送消息时遇到问题。
基本上,我有一些监视网站的线程,我想调用一个函数(我正在传递给线程),当我注意到网站上的更改时,该函数将消息发送到一个特定的频道。
我最初尝试直接在没有异步/等待的情况下调用client.send_message()
,但是它根本不起作用,所以我编写了异步/等待函数来发送消息(测试了它并起作用),但是我又遇到了问题它从线程中获取,所以我最终将bot客户端传递给我的线程并调用self.bot_client.loop.create_task(self.sendmsgfunction(msg))
。可以,但是与机器人用通常的{{1}来回答消息所花费的时间相比,它的速度慢得令人难以置信(大约需要15秒发送消息,而且无论如何也可能不是正确的处理方式)。 }功能。
我已经尝试过使用asyncio创建一个事件循环,然后调用该函数,但是再次失败了。
有什么想法吗?
答案 0 :(得分:0)
如果要向特定频道发送消息,首先应获取频道对象。
channel = discord.utils.get(ctx.guild.channels, id=channel_id_here)
那你就可以做
await channel.send()
答案 1 :(得分:0)
您可以使用asyncio.run()
运行异步函数,如下所示:
import asyncio
async def async_func():
print("Async function run!")
asyncio.run(async_func())