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

使用Discord机器人为Webhook消息添加Paid/Denied按钮失败求助

问题分析与修复方案

你的代码存在几个关键错误,直接导致按钮无法显示,逐一修正即可解决:

1. 事件名大小写错误

Discord.js 的消息创建事件是驼峰命名的 messageCreate,不是全小写的 messagecreate,事件名不匹配会让这段代码根本不会触发。

2. ButtonStyle 枚举拼写错误

ButtonStyle.Succes 拼写错误,正确写法是 ButtonStyle.Success(多了一个字母s),拼写错误会导致按钮样式无效,进而无法被渲染。

3. 缺失必要的组件导入(核心前提)

如果使用的是 Discord.js v14 及以上版本,必须显式导入所需的组件类,否则代码会因找不到构造函数而报错。

修复后的完整代码

// 先导入Discord.js的相关组件(以CommonJS导入为例,根据你的项目环境调整)
const { Client, ButtonBuilder, ButtonStyle, ActionRowBuilder } = require('discord.js');
const client = new Client({ intents: [/* 需开启必要意图,比如Guilds、GuildMessages、MessageContent */] });

client.on('messageCreate', (message) => {
    if (message.author.bot) {
        const expenseSuccess = new ButtonBuilder()
            .setLabel('Paid')
            .setStyle(ButtonStyle.Success) // 修正拼写错误
            .setCustomId('expenseSuccess');

        const expenseFail = new ButtonBuilder()
            .setLabel('Denied')
            .setStyle(ButtonStyle.Danger)
            .setCustomId('expenseFail');

        const buttonRow = new ActionRowBuilder().addComponents(expenseSuccess, expenseFail);
        message.reply({ content: 'Please Select...', components: [buttonRow] });
    }
});

// 记得登录你的Bot
client.login('你的Bot令牌');

额外注意事项

  • 确保你的 Bot 开启了 MessageContent 意图(若需要读取消息内容),否则可能无法触发事件。
  • 确认使用的是 Discord.js v14 及以上版本,ButtonBuilder 这类组件是v14版本才引入的,旧版本写法完全不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:22:31