Discord Bot 可以在频道上向所有人发送消息吗
Posted
技术标签:
【中文标题】Discord Bot 可以在频道上向所有人发送消息吗【英文标题】:Can Discord Bot send a message on a channel to everyone 【发布时间】:2020-02-07 01:35:24 【问题描述】:我正在使用 nodeJs 服务器上的 discord.js 库编写一个 discord Bot。 这是我的问题:当一个事件发生时(比如有人发送消息),机器人是否可以回答某个角色的成员或每个人。 message.reply("my reply") 方法只回复消息的作者,因为我现在使用它......
【问题讨论】:
您可以找到一个角色的所有成员,并对该角色的所有成员进行 foreach Sending private message to a group of user (Discord.js)的可能重复 我知道怎么做,但我不明白如何通过回复方法将消息发送给角色成员。 在 foreach 上,您将拥有会员承诺,您可以做出 member.reply 你问的是XY question。如果msg.reply
对您没有任何用处,为什么还要在这里使用它呢? The accepted answer at the proposed duplicate 完全满足您的需求,您只需将其放入 client.on("message", msg => ...);
调用中,然后从 message.guild
或其他任何地方获取公会。
【参考方案1】:
您的问题是 message.reply()
是一种非常有限的方法:它总是提到消息的作者,您不能覆盖它。
您需要使用更通用的方法channel.send()
,并自己构建提及。 .reply()
只是常用形式的快捷方式,但您需要自定义。
大概,你希望它与消息发生在同一个频道,所以你需要message.channel.send("Whatever content you want")
。
现在,要添加角色,您需要决定如何选择角色。是固定的吗?那么你可以hard-code a role mention by role ID:<@&134362454976102401>
(当然需要是你需要的角色ID)。
如果你想找到一个角色,例如通过名字,你需要通过搜索相关公会来做到这一点。您可以通过message.guild
访问它,但请注意,对于 DM,它将未定义。
然后你可以做类似的事情
const role = message.guild.roles.find(role => role.name === "NameYouWant");
message.channel.send(`$role something something`);
因为 Role 对象在转换为字符串时会成为提及项。
【讨论】:
感谢 Xan,这完美地解决了我的问题。我已经通过公会找回了角色。我想我自己很难发现角色转换将它们变成字符串,所以最后一部分代码很有用。 @Xan 请看my question以上是关于Discord Bot 可以在频道上向所有人发送消息吗的主要内容,如果未能解决你的问题,请参考以下文章
Discord.py bot 在添加反应时将消息重新发送到另一个频道中断
在 Discord (discord.py bot) 中仅从 1 个频道发送消息