📌  相关文章
📜  向所有服务器发送消息 discord.js - Javascript (1)

📅  最后修改于: 2023-12-03 15:22:58.445000             🧑  作者: Mango

向所有服务器发送消息 discord.js - JavaScript

如果你想通过Discord.js向所有服务器(guilds)发送消息,你需要在每个服务器上单独发送消息。但是,Discord.js提供了一种发送消息到每个服务器的简单方式。

以下是如何向所有服务器发送消息的代码片段:

// 使用 forEach 循环遍历 bot 的服务器
bot.guilds.cache.forEach(guild => {
    // 获取该服务器的默认频道
    let defaultChannel = "";
    guild.channels.cache.forEach(channel => {
        if (channel.type == "text" && defaultChannel == "") {
            if (channel.permissionsFor(guild.me).has("SEND_MESSAGES")) {
                defaultChannel = channel;
            }
        }
    })
    // 发送消息到默认频道
    if (defaultChannel != "") {
        defaultChannel.send("这是一条发送到所有服务器的消息!");
    }
})

在上面的代码片段中,我们使用了 forEach() 循环遍历了 bot 拥有的所有服务器(guilds),并找到了每个服务器的默认频道(defaultChannel),然后在默认频道中发送了一条消息。

请注意,为了确保我们能够发送消息,我们还必须检查 defaultChannel 是否具有写入权限。在本例中,我们使用了 permissionsFor() 函数来检查我们的机器人是否拥有 SEND_MESSAGES 权限。

除此之外,你也可以根据你的需求在指定的频道发送消息,只需要将发送消息的部分切换到指定频道即可.

这是如何在指定频道中向所有服务器发送消息的代码片段:

// 查找频道时,指定要发送消息的频道 ID
const channelID = "频道ID";

bot.guilds.cache.forEach(guild => {
    // 用指定频道 ID 获取 频道
    const channel = guild.channels.cache.get(channelID);
    // 确认频道是文本频道以及机器人是否有权限发送消息
    if (channel && channel.type === "text" && channel.permissionsFor(guild.me).has("SEND_MESSAGES")) {
        // 在频道中发送消息
        channel.send("这是一条发送到所有服务器的消息!");
    }
})

以上是通过Discord.js向所有服务器发送消息的基本实现, 但是具体的实际操作应该依据自己的需求来调整。