需要帮助使用 discord bot 命令分配变量

Posted

技术标签:

【中文标题】需要帮助使用 discord bot 命令分配变量【英文标题】:Need help for assigning a variable with discord bot command 【发布时间】:2020-12-13 15:01:23 【问题描述】:

所以我正在尝试使用 discord.js 构建我自己的 discord 机器人。我想要实现一件非常重要的事情。 我想通过 bot 命令重新分配变量。我当前的代码如下所示:

client.on("message", (msg) => 
  if (msg.content.startsWith(config.prefix + "boosting")) 
    const embed = new Discord.MessageEmbed()
      .setColor("0xd08d11")
      .setTitle("**Random Title**")
      .setDescription(Some description)
      .addFields(
         name: '\u200B', value: '\u200B' , //spacer
         name: "Person 0", value: 'Personvalue', inline: true ,
         name: '\u200B', value: '\u200B' , //spacer
         name: 'Price', value: 'Pricevalue', inline: true ,
         name: '\u200B', value: '\u200B' , //spacer
         name: 'Person 1', value: '40k', inline: true ,
         name: 'Person 2', value: '40k', inline: true ,
         name: 'Person 3', value: '40k', inline: true ,
         name: 'Person 4', value: '40k', inline: true ,
      )
      .setThumbnail(logo)
      .setTimestamp()
      .setFooter('created by me or something like that');
    client.channels.cache.get(`here_is_my_channel_id`).send(embed); 
  
);

client.login(config.token)

好的,所以现在我可以键入 .boosting 以从我的机器人获取嵌入消息,但问题是,我想键入 .boosting Variable1 Variable2 等等,以便为嵌入消息的属性提供新值.对于属性,我的意思是描述或字段名称或值。我尝试过这样的事情:

let Variable = "Test";

client.on("message", (msg) => 
  if (msg.content.startsWith(config.prefix + "boosting" + " " + Variable)) 
    const embed = new Discord.MessageEmbed()
      .setColor("0xd08d11")
      .setTitle("**Random Title**")
      .setDescription(Variable)
      .addFields(
         name: '\u200B', value: '\u200B' , //spacer
         name: "Person 0", value: 'Personvalue', inline: true ,
         name: '\u200B', value: '\u200B' , //spacer
         name: 'Price', value: 'Pricevalue', inline: true ,
         name: '\u200B', value: '\u200B' , //spacer
         name: 'Person 1', value: '40k', inline: true ,
         name: 'Person 2', value: '40k', inline: true ,
         name: 'Person 3', value: '40k', inline: true ,
         name: 'Person 4', value: '40k', inline: true ,
      )
      .setThumbnail(logo)
      .setTimestamp()
      .setFooter('created by me or something like that');
    client.channels.cache.get(`here_is_my_channel_id`).send(embed); 
  
);

client.login(config.token)

现在我可以编写 .boosting Test 并且此嵌入消息的描述将具有此值。 我知道我需要定义变量,但是有没有可能用 bot 命令重新分配它?例如,它可以从值“Test”更改为“something”。感谢每一个帮助!

【问题讨论】:

你遇到了什么错误? 【参考方案1】:

您可以将消息拆分为单词数组:

const args = message.content.slice(config.prefix.length).split(/ +/).slice(1)

// example: `.boosting hello people of the world`
// returns: ['hello', 'people', 'of', 'the', 'world']

所以,如果您想获取第一个参数(单词),您可以使用args[0]。第二个,args[1],以此类推。

您更新了代码:

client.on("message", (msg) => 
  if (msg.content.startsWith(config.prefix + "boosting" + " " + Variable)) 
    const args = message.content.slice(config.prefix.length).split(/ +/).slice(1)
    const embed = new Discord.MessageEmbed()
      .setColor("0xd08d11")
      .setTitle("**Random Title**")
      .setDescription(args[0])
      .addFields(
         name: '\u200B', value: '\u200B' , //spacer
         name: "Person 0", value: 'Personvalue', inline: true ,
         name: '\u200B', value: '\u200B' , //spacer
         name: 'Price', value: 'Pricevalue', inline: true ,
         name: '\u200B', value: '\u200B' , //spacer
         name: 'Person 1', value: '40k', inline: true ,
         name: 'Person 2', value: '40k', inline: true ,
         name: 'Person 3', value: '40k', inline: true ,
         name: 'Person 4', value: '40k', inline: true ,
      )
      .setThumbnail(logo)
      .setTimestamp()
      .setFooter('created by me or something like that');
    client.channels.cache.get(`here_is_my_channel_id`).send(embed); 
  
);

client.login(config.token)

【讨论】:

感谢您的回答,对我帮助很大。 很高兴我能帮上忙 :)

以上是关于需要帮助使用 discord bot 命令分配变量的主要内容,如果未能解决你的问题,请参考以下文章

discord bot帮助命令没有做任何事情

Discord bot 运行命令两次 discord.py

Discord 机器人帮助命令 [discord.py]

需要帮助将 Bot 更新到 Discord.js v12

Discord Bot JS:编辑来自先前斜杠命令交互的回复

Discord bot 发送消息特定通道错误