discord.js如何将多个按钮放入同一ActionRow实现同行显示
问题原因
你当前的代码在for循环内每次执行都会新建一个MessageActionRow实例,每个实例仅存放1个按钮,相当于每个按钮单独占一行,最终就会出现所有按钮竖排展示的效果。
Discord 接口规则:单个MessageActionRow(按钮行)最多可放置5个按钮,单条消息最多支持5个按钮行,你当前场景下5个按钮完全符合单行放置的限制要求。
修复方案
只需要提前创建1个MessageActionRow实例,在循环中仅往这个实例内添加按钮,最后将存了所有按钮的行实例放入components对应的数组传入即可,所有按钮原有属性(customId、label、样式)都不会发生变化。
修复后的完整代码:
const x = 5 // 提前初始化唯一的按钮行容器 const buttonRow = new MessageActionRow() for (let i = 0; i < x; i++) { // 循环内仅创建按钮、添加到同一个行容器中,不重复新建MessageActionRow buttonRow.addComponents( new MessageButton() .setCustomId(i.toString()) .setLabel(messageSplit[i]) .setStyle('PRIMARY') ) } // components字段要求传入ActionRow类型构成的数组,因此将建好的单行放入数组即可 msg.reply({ embeds: [embedRecipient], components: [buttonRow] })
注意:如果后续需要放置超过5个按钮,需要新建第二个MessageActionRow实例存放第6个及以后的按钮,避免超出接口限制报错。
内容的提问来源于stack exchange,提问作者Diraconda
相关产品推荐
相关产品推荐

