You need to enable JavaScript to run this app. 为何相同代码在Replit与VS Code运行结果不同?discord.js按钮指令无响应
优惠活动
大模型
产品
解决方案
定价
更多

为何相同代码在Replit与VS Code运行结果不同?discord.js按钮指令无响应

问题原因及修复方案

1. 最直接的变量名错误

你代码中定义按钮的变量名是ye和nu,但发送消息时引用的变量是yes和no,这两个变量未定义,直接导致代码运行异常。由于你的run函数是异步函数,没有配置异常捕获逻辑,所以错误被吞没有输出到控制台。
修复方式:将发送代码中的按钮数组替换为正确的变量名:

message.channel.send("Hello",{
  buttons: [ye, nu],
  embed: embed
})

2. 依赖及API版本不兼容问题

discord-buttons是discord.js v12版本的第三方扩展包,discord.js v13及以上版本已经内置了按钮组件,不再需要额外安装该包,两个版本的API写法完全不兼容:

  • 如果你使用的是discord.js v12版本:需要在项目入口文件中初始化discord-buttons,在创建client实例后添加代码:require('discord-buttons')(Client),未初始化的话按钮参数会被忽略,消息无法正常发送。
  • 如果你使用的是discord.js v13及以上版本:你当前的写法完全不兼容,需要替换为内置的ButtonBuilder相关API,同时send方法的传参格式需要调整为单对象结构:
// v13+ 写法示例
message.channel.send({
  content: "Hello",
  components: [
    new discord.ActionRowBuilder().addComponents(
      new discord.ButtonBuilder().setCustomId("smart").setLabel("yes").setStyle(discord.ButtonStyle.Success),
      new discord.ButtonBuilder().setCustomId("idiot").setLabel("no").setStyle(discord.ButtonStyle.Danger)
    )
  ],
  embeds: [embed]
})

3. 消息内容权限未开启

Discord API v10及以上版本要求机器人必须在Discord开发者后台开启Message Content Intent权限,否则机器人无法读取普通消息的内容,自然无法匹配前缀触发指令,这也是机器人无响应且无报错的常见原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 15:21:03