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

Discord.js命令异常:+sendtextbutton按钮标签含命令本身

问题解决:按钮标签去掉命令前缀

你的问题出在拼接按钮标签时没有移除命令本身,当前代码把包含+sendtextbutton的完整消息内容都当成了标签文本,所以才会出现命令+输入内容的情况。另外代码里args的定义顺序有问题,会导致未定义错误,一起调整。

修改后的代码:

client.on('messageCreate', async message => {
  if (message.content.startsWith(`+sendtextbutton`)) {
    const args = message.content.trim().split(/ +/g);
    // 先判断权限
    if (!config.bot.owners.includes(`${message.author.id}`)) {
      if (!args[1]) return message.react("❌"); // 这里判断args[1],因为args[0]是命令
      return;
    }
    // 去掉第一个元素(命令),拼接剩下的内容作为标签
    let text = args.slice(1).join(' ');
    // 没有输入内容则返回
    if (!text) return message.react("❌");
    
    const embed = new MessageEmbed()
      .setColor(0x0099FF)
      .setTitle('press the button');

    let button = new MessageButton()
      .setLabel(text)
      .setStyle(`LINK`)
      .setURL(`youtube.com`)
      .setEmoji(`📍`)

    let row = new MessageActionRow()
      .setComponents(button)
    message.channel.send({embeds: [embed], components: [row] })
  }
})

关键改动说明:

  • 把args的定义移到权限判断前面,避免未定义错误
  • 用args.slice(1).join(' ')替代原来的args.join(' '),slice(1)会剔除数组第一个元素(也就是+sendtextbutton命令),只保留后面的用户输入内容
  • 权限判断里的参数检查改成!args[1],因为此时args[0]是命令,args[1]才是用户输入的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:45:41