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

Discord.js+Node.js:Webhook发送的按钮不显示问题求助

解决Discord Webhook按钮不显示的问题

核心修复方案

1. 确认Discord.js版本兼容性

你的代码使用了v14+专属的ActionRowBuilder、ButtonBuilder等构造类,必须确保安装的是discord.js v14或更高版本:

  • 检查当前版本:npm list discord.js
  • 升级到最新版:npm install discord.js@latest

2. 修正组件的序列化方式

v14中Webhook发送组件时,部分场景下需要显式将ActionRowBuilder转换为JSON格式,修改发送逻辑:

webhookClient.send({
    username: 'Cool BOT',
    avatarURL: 'https://i.imgur.com/AfFp7pu.png',
    embeds: [embed],
    components: [row.toJSON()] // 显式转为Discord可识别的JSON结构
});

3. 排查Webhook本身问题

  • 确认Webhook链接正确有效,无拼写错误
  • 确保Webhook在目标服务器拥有发送消息的权限
  • 若为机器人应用创建的Webhook,需保证机器人已加入目标服务器且权限正常

完整可运行代码

const { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, WebhookClient } = require('discord.js');
const webhookClient = new WebhookClient({ url: "你的Webhook链接" });

const embed = new EmbedBuilder()
    .setTitle('informations')
    .setColor('#FF5733');

const row = new ActionRowBuilder()
    .addComponents(
        new ButtonBuilder()
            .setCustomId('primary')
            .setLabel('Click')
            .setStyle(ButtonStyle.Primary)
    );

webhookClient.send({
    username: 'Cool BOT',
    avatarURL: 'https://i.imgur.com/AfFp7pu.png',
    embeds: [embed],
    components: [row.toJSON()]
})
.catch(err => console.error('Webhook发送失败:', err)); // 捕获错误便于排查

额外排查建议

  • 运行代码后查看控制台输出,错误信息会直接提示问题根源(如权限不足、链接无效等)
  • 可先移除embed,只发送按钮组件,确认是否是embed导致的冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:27:06