使用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
相关产品推荐
相关产品推荐

