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

使用discord.js、discord-buttons如何给消息添加超过5个按钮?

报错诱因及解决方案

核心原因

这个报错和你的机器人权限、账户配置没有任何关系,是Discord官方对消息组件的固有规则限制导致的:

  • 所有交互按钮都必须放在*动作行(ActionRow)*容器内
  • 单个动作行最多只能放置5个按钮
    你当前的写法是直接将9个按钮作为数组传给buttons参数,discord-buttons库会默认把所有按钮都塞到同一个自动生成的动作行里,超过了单行动作行的5个按钮上限,因此触发了API返回的「超过最大宽度」错误。

修复方案

你只需要把按钮拆分到多个动作行里即可,单条消息最多支持5个动作行,也就是最多可以放25个按钮,完全满足你的需求。修正后的代码示例如下:

const { MessageButton, MessageActionRow } = require('discord-buttons');

// 批量生成9个按钮
let Buttons = Array.from({length: 9}, (_, index) => {
  return new MessageButton()
    .setStyle('gray')
    .setID(index.toString())
    .setLabel(' ')
})

// 拆分到两个动作行,第一行放5个,第二行放4个
const row1 = new MessageActionRow().addComponents(Buttons.slice(0, 5))
const row2 = new MessageActionRow().addComponents(Buttons.slice(5, 9))

// 发送消息时传入动作行数组
msg.channel.send(`...`, { components: [row1, row2] })

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 19:24:03