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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:24:33