我希望这样,当我键入一个命令和一条消息时,它将把这条消息转发到机器人与python不和谐连接的每个服务器中的一个通道。我知道如何获取消息并寻找命令,但我不知道如何找到机器人可以在每个服务器上发布的频道,然后发送它。
有人能帮我吗?
您的Client
的服务器
对象是机器人所属的Server
对象的可迭代对象,每个Server
包含一个可迭代的通道
,您可以使用它来获取您的通道可以发帖了。
client = discord.Client()
await client.wait_until_ready()
channels = []
for server in client.servers:
for channel in server.channels:
channels.append(channel)
# If you have your discord.Message object (message) and
# command you want to send (command_str) you could then:
# await client.send_message(message.channel, command_str)
# channels will now be populated with all the possible channels
客户端服务器上的文档
服务器通道上的文档
关于客户端消息传递的文档
更新Patrick的代码:
@bot.command(pass_context=True)
async def broadcast(ctx, *, msg):
for server in bot.guilds:
for channel in server.text_channels:
try:
await channel.send(msg)
except Exception:
continue
else:
break
变化:服务器现在被称为公会,我们需要使用通道类的发送方法,也希望只使用text_channels。
您可以循环访问bot可以看到的所有服务器,然后循环访问它们的通道,直到找到一个可以向其发送消息的服务器。
@bot.command(pass_context=True)
async def broadcast(ctx, *, msg):
for server in bot.servers:
for channel in server.channels:
try:
await bot.send_message(channel, msg)
except Exception:
continue
else:
break
请不要说“已经回答”,因为我尝试了一切,包括这里的所有相关帖子,显然,我正在阅读api文档。 完全错误为: 忽略on_ready Traceback(最近一次调用)中的异常:文件“/usr/local/lib/python3.8/dist packages/discord/client.py”,第312行,在on_ready wait channel中的事件wait coro(*args,**kw
每次机器人被邀请到服务器时,我都想发送一条消息。然后它应该写这样的话:“你好,这是我的不和机器人” 到目前为止,我有这个代码,它不会产生错误,但也不会发送消息。
我有一个不和谐机器人,定期检查数据库中的一些数据,如果有更新,它会向通道输出一些内容。所以我设置了一个每小时运行一次的函数。 当机器人被添加到多个服务器时,问题就出现了,在这些服务器中,消息只被发送到特定的,因此消息只被发送到我的服务器通道。本质上,我只向我的渠道发送通知,我怎么能向每个拥有我的机器人的渠道发送通知,这可能吗?
我目前正在制作一个discord bot,并希望在服务器加入时在服务器的通道中发送一条消息,这是我到目前为止的代码。 当我运行这段代码时,什么都不会发生。我没有得到任何ERORR或输出。 如果有人能帮忙,那就太棒了。谢谢
我正在编写自己的websocket服务器和客户端。我成功地处理了握手并建立了联系。 现在我正在编写send_message函数,它创建了一个合适的框架。下面的例子只是为了这个问题,它不是我最终打算写的,这只是我尝试给我相同的结果的许多方法中的一种。 输入:以上函数应发送 第一个字节 第一位设置为1-,表示这是消息的最后一帧 第二、第三和第四个-所有的零,对于这个例子来说是不相关的 以下四位-000
我正在尝试制作一个机器人,每4小时发送一次自动消息,但由于某些原因,它无法工作。我查看了所有的google和stack overflow,但没有一个答案能帮助我。不和谐是否改变了机器人发送消息的方式? 如果我试图运行这个代码,它会给我这个错误 任何帮助将不胜感激并感谢您的时间