You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js机器人向所有加入服务器各发一条消息代码无响应如何解决

问题排查与修复方案

原有代码的核心问题

  • 作用域内未传入client变量:你在命令模块的execute函数内直接使用client,但没有在函数参数中接收命令处理器传入的客户端实例,导致代码静默失败无输出。
  • 消息发送目标错误:原有逻辑中message.channel.send()是将所有服务器的信息都发送到你触发命令的当前频道,完全没有实现给每个服务器单独发消息的需求。
  • 未做频道权限过滤:没有筛选机器人有权限发送消息的文本频道,即便逻辑正确也大概率出现发送失败的情况。

修复后符合module.exports规范的代码

const { MessageEmbed } = require('discord.js');
// 如果你使用discord.js v14及以上版本,将上面的导入替换为:
// const { EmbedBuilder } = require('@discordjs/builders');

module.exports = {
  name: "informacja",
  aliases: [],
  description: "向所有服务器发送通知",
  // 注意:这里的参数顺序要和你的命令处理器传参顺序匹配,大部分命令处理器会先传client再传message
  async execute(client, message) {
    // 遍历所有机器人加入的服务器
    for (const guild of client.guilds.cache.values()) {
      try {
        // 筛选服务器内第一个机器人有权限发消息、发嵌入的文本频道
        const targetChannel = guild.channels.cache.find(
          channel => 
            // v13版本文本频道类型为'GUILD_TEXT',v14版本为'GuildText',注意对应修改
            channel.type === 'GUILD_TEXT' && 
            channel.permissionsFor(guild.me).has(['SEND_MESSAGES', 'EMBED_LINKS'])
        );

        // 没有符合条件的频道就跳过当前服务器
        if (!targetChannel) continue;

        // 构造要发送的Embed
        // v14版本将MessageEmbed替换为EmbedBuilder即可,方法调用规则一致
        const notifyEmbed = new MessageEmbed()
          .setTitle('通知标题')
          .setDescription('你要发送的通知内容')
          .setColor('Blue');

        // 给当前服务器的目标频道发消息
        await targetChannel.send({ embeds: [notifyEmbed] });

        // 可选:加1秒延迟避免触发Discord速率限制,服务器数量多的话建议加上
        // await new Promise(resolve => setTimeout(resolve, 1000));
      } catch (err) {
        console.log(`向服务器 ${guild.name} 发送消息失败:`, err);
      }
    }

    // 全部发送完成后给触发命令的用户反馈
    await message.reply('已尝试向所有服务器发送通知');
  }
};

额外注意事项

  • 如果你的命令处理器传参顺序是先传message再传client,请自行调整execute函数的参数顺序。
  • 批量发送消息容易触发Discord的反垃圾机制,服务器数量较多的情况下建议添加发送间隔。
  • 确保你的机器人开启了SERVER MEMBERS INTENT等必要的权限开关。

内容的提问来源于stack exchange,提问作者wolfie00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:18:03