如何在其中创建一个包含 2 个单词的命令 Discordjs

Posted

技术标签:

【中文标题】如何在其中创建一个包含 2 个单词的命令 Discordjs【英文标题】:How to make a command with 2 words in it Discordjs 【发布时间】:2021-06-11 20:31:33 【问题描述】:

我正在尝试为我的社区服务器编写一个 discord.js 机器人,但在制作帮助命令时遇到了一些问题。我有一个>help 的命令,它显示并嵌入了所有不同类别的命令。它还显示了如何查看其他命令,但为了能够做到这一点,我需要能够拥有像 >help fun>help staff 这样的命令。我试图制作>help fun 命令,但是当我键入它时,它只接受第一个参数,并且只显示>help 嵌入。如果有人可以向我展示>help fun 命令的代码,它只会发送一个新的 Discord.MessageEmbed,那就太好了。这是我尝试使用的代码:

module.exports = 
name: 'help fun',
description: "get some `fun` help!",
execute(message, args, Discord)
  
  const helpfunEmbed = new Discord.MessageEmbed()
  
  .setColor('#9947d6')
  .setAuthor('Vero Commands List', 'https://cdn.discordapp.com/attachments/746321327727706226/819556499088605214/Hypers.png')
  .setDescription("The Vero Bot prefix for `Ak's Basement` is `>`")
    .setThumbnail('https://images-ext-2.discordapp.net/external/hn8Iyc--j2npBvCjnAsXUt78zMovfsTj_DyRaBb1YdU/https/media.giphy.com/media/eEx0qRFYM1dyGQPAID/giphy.gif')
  .addFields(
     name: '`>ping`', value: 'shows bot latency',
   name: '**Work In Progress**', value: 'More commands coming soon!',
    )

message.channel.send(helpfunEmbed);

【问题讨论】:

【参考方案1】:

这是一个代码示例,

btw discord.js guide 对此有完整的解释,因此您可能想阅读它

如果您想访问该页面,请点击此处的链接;

https://discordjs.guide/creating-your-bot/commands-with-user-input.html

这是一个代码示例,

我假设 execute(message, >>>> args <<<<< , Discord) (args) 传递一个数组(这段代码是根据我上面说的指南)


module.exports = 
name: 'help'
description: "get some `fun` help!",
execute(message, args)

if(!args[0])  // if no args were give : ex: ">help"

  const helpEmbed = new Discord.MessageEmbed()
  .setColor('#9947d6')
  .setAuthor('something here')
  .setDescription("A description")

 
// do whatever you want with the code and send it,
// assume prefix is >
// this is if there were no args: ">help" will be the command


return message.channel.send(helpEmbed);


 else if(args[0].toLowerCase() == 'fun')  // lowercase it so it will not be case sensitive ex: this would allow ">help FUn" and ">help fun"

const helpFunEmbed = new Discord.MessageEmbed()
  .setColor('#9947d6')
  .setAuthor('something here')
  .setDescription("")

return message.channel.send(helpFunEmbed)
 else if(args[0] == 'info') // without ".toLowerCase()" will only allow : ">help info" and will give the below error we set if we use something like ">help Fun" 


// do something here (send your embed with help menu for info)


 else  // optional, if some one do a invalid category, it will send a error : ex: ">help dfsg"

return message.channel.send('Invalid category')

这样您就不必为每个类别创建单独的命令* 我们可以检查 args 看看他们是否提供了任何 args(下面有详细解释)

ps:你会注意到我已经从 execute(message, args) 中删除了 Discord 这是因为您不需要像这样导出 Discord,您可以这样做 const Discord = require('discord.js') 在顶部。改变这一点没有区别,但我喜欢只需要它在顶部,如果你想在那里添加不和谐,比如execute(message, args, Discord)

简单解释一下我们在这里做什么

首先,我们检查args[0] 是否未定义(如果用户在前面没有任何内容的情况下执行“帮助”,这将检测到并发送

如果返回 undefined,它将发送带有类别的嵌入

如果给定一个 arg,它将转到 if-else

检查 args = 是否符合我们设置的类别。

如果将带有相关命令信息的嵌入发送给用户 如果它不等于它检查的类别,它将通过所有 if else 链查看它是否匹配 如果不匹配,它将发送错误“无效类别”,这意味着用户发送了我们不想要的类别

【讨论】:

非常感谢。这非常有帮助,将使执行此帮助命令变得更加容易! np,如果您觉得这有帮助,请将其标记为答案【参考方案2】:

创建帮助命令,让用户将“fun”作为参数传递,然后基于机器人的回复,这样您就可以对所有帮助部分使用一个命令。

【讨论】:

我尝试这样做,它适用于 args,但如果我写 >help fun 它会同时发送 >help fun>帮助 嵌入。我应该怎么做才能解决这个问题?

以上是关于如何在其中创建一个包含 2 个单词的命令 Discordjs的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个字符串数组来分割一个字符,其中单词用“”分隔? C++

如何编写 python 单行代码来创建文件中所有单词的列表? [复制]

Erlang:创建磁盘模式

Regex-创建验证以强制一个字符串包含2个以上的单词

逆序单词 HIhoCoder 1366 字典树

查找 3 个 C++ 中的 1 个集合唯一的单词