从Python Discord bot中的同步线程发送消息

f87krz0w  于 2023-01-24  发布在  Python
关注(0)|答案(3)|浏览(187)

我正在Python 3.6中使用www.example.com库开发一个Discord botdiscord.py,在尝试从我创建的线程向特定通道发送消息时遇到了问题。
基本上,我有一些线程监视网站,我想调用一个函数(我传递给线程),发送消息到一个特定的渠道时,我注意到网站上的变化。
我最初尝试不使用async/await直接调用client.send_message(),但是根本不起作用,所以我编写了async/await函数来发送消息(测试过了,效果很好)但是从线程调用它时又遇到了问题,所以我最终将bot客户端传递给了我的线程,并调用了self.bot_client.loop.create_task(self.sendmsgfunction(msg))。(发送消息大约需要15秒,而且无论如何这可能不是正确的方法)与机器人使用通常的@bot.event函数回复消息所需的时间相比。
我已经尝试过用asyncio创建一个事件循环,然后调用函数,但是我再次以错误告终。
有什么想法吗?

qhhrdooz

qhhrdooz1#

您可以使用asyncio.run()来运行异步函数,如下所示:

import asyncio

async def async_func():
    print("Async function run!")

asyncio.run(async_func())
kx7yvsdv

kx7yvsdv2#

要在Discord上更改某个人的昵称,您可以从Mac或PC登录Discord帐户,然后在左侧栏中选择所选的服务器。在最右侧的面板中,有服务器成员列表,只需右键单击您的用户名并选择编辑服务器配置文件选项。2然后在文本框中输入您的新昵称并点击保存更改选项。要了解更多关于这个主题的信息,你可以在这里轻松学习how to change your nickname on discord.你也可以在该服务器的聊天中使用斜杠命令“/nick”后跟你选择的昵称,轻松地编辑和更改名称.

r6vfmomb

r6vfmomb3#

如果你想发送一条消息到一个特定的通道,首先你应该得到通道对象。

channel = discord.utils.get(ctx.guild.channels, id=channel_id_here)

那你就

await channel.send()

相关问题