如何在 Discord.js 中处理带空格的参数
Posted
技术标签:
【中文标题】如何在 Discord.js 中处理带空格的参数【英文标题】:How to handle arguments with spaces in Discord.js 【发布时间】:2021-10-13 10:42:15 【问题描述】:我正在尝试让我的 Discord 机器人处理参数中带有空格的命令。我的args
变量在我的index.js
文件中定义:
const args = message.content.slice(prefix.length).split(/ +/);
const commandName = args.shift().toLowerCase();
我的命令文件 (perk.js
) 如下所示:
const Discord = require('discord.js');
const PerkData = require('./perk.json');
module.exports =
name: 'perk',
args: true,
execute(message, args)
for (let i = 0; i < PerkData.perks.length; i++)
if (PerkData.perks[i].id.toLowerCase() === args[0].toLowerCase())
const perkEmbed = new Discord.MessageEmbed()
.setColor('#000000')
.setTitle('__**' + PerkData.perks[i].name + '**__ ')
.setURL(PerkData.perks[i].url)
.setThumbnail(PerkData.perks[i].gif)
.setDescription('A teachable unique [' + PerkData.perks[i].character + '](' + PerkData.perks[i].characterURL + ') Perk <:Perk:833657215743295499>. It can be unlocked for all other characters from Level ' + PerkData.perks[i].lvl + ' onwards:')
.addField('__Description__', PerkData.perks[i].description, false)
message.channel.send(perkEmbed)
到目前为止,我在 JSON 文件中有一个“id”字段,其中包含连字符 -
而不是空格,然后perk.js
文件会从其中读取并将其与描述匹配。
示例:.perk ace-in-the-hole
如何做到这一点,以便我可以在参数中使用空格而不必使用连字符?
我是否需要更改args
在index.js
中的定义方式?或者可以在命令文件perk.js
中完成吗?
长话短说,我有:.perk ace-in-the-hole
工作。
但我希望能够做到这一点:.perk ace in the hole
(对不起,如果写得不好,我不是一个有经验的程序员......)
【问题讨论】:
【参考方案1】:您可以简单地用空格连接参数数组。
execute(message, args)
// Join the args array
let perkArg = args.join(' ')
for (let i = 0; i < PerkData.perks.length; i++)
if (PerkData.perks[i].id.toLowerCase() === perkArg.toLowerCase())
// ...
假设所有 perk ID 都是唯一的,并且您只想发送一条消息,您还可以在一行中搜索整个 PerkData.perks
数组,而无需使用 for 循环来查找单个项目。
// Join the args array
let perkArg = args.join(' ')
let perk = PerkData.perks.find(perk => perk.id === perkArg.toLowerCase())
if(perk !== undefined)
// perk was found
else
// perk was not found
【讨论】:
以上是关于如何在 Discord.js 中处理带空格的参数的主要内容,如果未能解决你的问题,请参考以下文章
斜杠命令处理程序中的 Discord.js v13 TypeError
在 discord.js 中制作带有前缀的命令处理程序时出现问题 [重复]