当前位置: 首页 > 知识库问答 >
问题:

不一致js命令输入字符串

禹德水
2023-03-14

我正在写一个不和谐机器人游戏,我的问题是玩家必须创造一个角色。然而,每个标准的人都有名字和姓氏,但我在一个命令中接受其他输入。我的问题是,我不确定我的代码是否会在确实放置引号的情况下忽略名称周围的引号。

假设有人给他们的角色命名为乔·什莫。当他们输入命令p://ccreate“Joe Shmoe”Male 38时,我担心我的参数解释器可能会将“Joe”作为args[0],“Shmoe”作为args[1],将Male作为args[2],将38作为args[3]。我的问题是,我想把“乔·什莫”理解为一个论点。这是我的密码:

client.on("message", async message => {
if(message.author.bot) return;
if(message.content.indexOf(config.prefix) !== 0) return;
const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase(); 

如果我是对的,您能否详细说明如何编辑它,以便如果我的代码收到这样的问题,它会将字符串保留为一个?然而,我也知道一些替代方案可能会在任何非整数、布尔值等的内容周围加上引号,因此最好可以找到一种方法,将任何用引号括起来的内容都作为字符串包含,如果字符串只有一个字,则仍然可以将其识别为字符串,而无需抛出代码。我知道这已经做了,只是不知道怎么做。

共有1个答案

法兴德
2023-03-14

有多种方法可以做到这一点,这里有一种可能的方法,用注释解释每个步骤中发生的事情。

/* The user enters  p://ccreate "Joe Shmoe" Male 38 */
const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
// args = ['p://ccreate', '"Joe', 'Shmoe"', 'Male, '38'];
const command = args.shift().toLowerCase();
// args = ['"Joe', 'Shmoe"', 'Male', '38'];

/* Now you want to get the full name, i.e: the first 2 elements from args */
const name = args.slice(0,2).join(' ').replace(/"/g,'');
/* args.slice(0,2) gets the first 2 elements
   .join(' ') joins these elements separating them with a space
   .replace(/"/g,'') removes all instances of the character " */
// So now, name = 'Joe Shmoe'

const gender = args.slice(-2)[0];
/* args.slice(-2) gets the last 2 elements in the array
   [0] gets the first element in the returned array of 2 elements */
// Therefore, gender = 'Male'

const age = args.slice(-1);
/* args.slice(-1) gets the last element in the array */
// As a result, age = '38'. Keep in mind that this is a string, you could use parseInt(age) if you require it as an integer.
 类似资料:
  • 我正在尝试修复我今天遇到的一个错误,错误如下: C:\用户\nalfo\OneDrive\桌面\不和谐机器人\NetSync\命令\审核\ban.js:15let{user}=message.mentions.members.first () || message.guild.members.get(参数[0]);^ TypeError:无法对(message.indications.member

  • 问题内容: 我有一个简单的Python问题,我的大脑停滞不前。此代码段有效。但是,当我用phoneNumber替换“ 258 494-3929”时,出现以下错误: 顺便说一句,我没有和尝试使用的情况下 我还能缺少什么? 问题答案: 您应该使用而不是,而不必调用,因为此函数本身返回一个字符串:

  • 我得到了一个unban命令代码,在控制台中出现以下错误: (节点:9348)未处理的PromisejectionWarning:TypeError:无法读取未定义的at对象的属性“member”。在客户端执行(C:\Users\19nik\Documents\GitHub\bot project\commands\unban.js:9:22)。(C:\Users\19nik\Documents\G

  • 代码有效,但不是原因 这只会显示最后两个字的原因,我不知道为什么?我如何将其转为包含全部原因 (命令是'!静音@成员[时间][原因])

  • 上面的代码正在运行。 我没有得到任何错误,但我也希望机器人显示他们是afk的原因,当他们提到。有人能帮忙吗?

  • 如前所述。我正在尝试为我的Discord机器人创建一个临时静音命令。我遇到的问题是,它创建了一个静音的角色,但即使我更改了烫发,用户仍然可以编写消息。除此之外,我还收到了以下弃用警告: (节点:15956)弃用警告:集合#查找:改为传递函数