如何在 discord.js 中同时向不同频道发送消息?

Posted

技术标签:

【中文标题】如何在 discord.js 中同时向不同频道发送消息?【英文标题】:How do I send message to different channel at the same time in discord.js? 【发布时间】:2020-04-11 10:29:36 【问题描述】:

我的目标是向名称为 global-chat 的频道发送消息。 我试过了:

const Discord = require("discord.js")
const client = new Discord.Client();

client.on("message", async(msg) => 
   if(msg.channel.name !== "global-chat")return;
   let message = msg.content
   await client.channels.find("name", "global-chat").send(message)
)

但是当我在一台服务器的global-chat 频道中发送消息时,它不会发送到其他服务器上的global-chat。谁能帮我解决这个问题?

【问题讨论】:

【参考方案1】:

如果我正确理解您的问题,您想向所有其他公会的同名频道发送消息。

此行将同时将消息中继到机器人正在观看的名为global-chat所有频道。下面是它的工作原理......

Promise.all() 以并行方式执行 Promises。 Client.channels 是机器人正在观看的频道的 Collection。使用Collection.filter(),您可以仅使用名为global-chat 的频道组成一个新集合。 Collection.map() 返回由为集合中的每个值提供的函数返回的值组成的数组。在这种情况下,它返回一个 Promises 数组供Promise.all() 使用。
await Promise.all(client.channels.filter(c => c.name === 'global-chat').map(c => c.send(msg.content)))

【讨论】:

【参考方案2】:

如果您使用 discord.js v12,则需要将 client.channels.filter 替换为 client.channels.cache.filter。

【讨论】:

以上是关于如何在 discord.js 中同时向不同频道发送消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 discord.js 向频道发送消息,但只有某些用户可以看到?

尝试向多个 Discord 频道发送消息

Discord.js - 如何在文本频道中发送垃圾邮件?

Discord.js 向存储在数据库中的每个频道 ID 发送消息

Discord.js 机器人无法向特定频道发送消息

在 Discord 中使用 cron 在特定时间向特定频道发送消息