gpt4 book ai didi

javascript - 如何避免同时发送两个命令?

转载 作者:行者123 更新时间:2023-11-28 04:50:07 27 4
gpt4 key购买 nike

我正在创建一个不和谐的机器人,它的部分命令是用不同的值(d6、d10、d20、d100)掷骰子。我是这样设置的:

const Discord = require('discord.js');
const client = new Discord.Client();

function commandIs (str, msg){
return msg.content.toLowerCase().startsWith("!" + str)
} //Function that shortens all response commands.

client.on ('message', message => {
if(commandIs("rolld6", message)){
var result = Math.floor(Math.random() * ((6 - 1) + 1) + 1);
message.channel.sendMessage (result);
} //rolls a d6

if(commandIs("rolld10", message)){
var result = Math.floor(Math.random() * ((10 - 1) + 1) + 1);
message.channel.sendMessage (result);
} //rolls a d10

if(commandIs("rolld20", message)){
var result = Math.floor(Math.random() * ((20 - 1) + 1) + 1);
message.channel.sendMessage (result);
} //rolls a d20

if(commandIs("rolld100", message)){
var result = Math.floor(Math.random() * ((100 - 1) + 1) + 1);
message.channel.sendMessage (result);
} //rolls a d100

})
client.login('<Discord bot token>'); //Bot token so it can login to Discord

我遇到的问题是,当我发送“!rolld100”时,机器人会回答,就像我同时发送“!rolld10”和“!rolld100”一样,因为 10 等于 100。

有什么可能的修复方法吗?我对 javascript 也很陌生,所以如果您能解释一下您的解决方案的作用,那将对我有很大帮助。

最佳答案

代码看起来有点复杂,有重复的代码。您可以使用正则表达式将其简化为几行代码

const Discord = require('discord.js');
const client = new Discord.Client();

client.on ('message', message => {

const rollMatch = message.match(/roll(\d+)\s/)
if (rollMatch) {
const sides = Number(rollMatch)
var result = Math.floor(Math.random() * sides + 1);
message.channel.sendMessage (result);
}

})
client.login('<Discord bot token>'); //Bot token so it can login to Discord

现在,如果你想按照自己的方式去做。你基本上需要做

if(commandIs("rolld100", message)){ }
else if(commandIs("rolld10", message)){ }
else if(commandIs("rolld20", message)){ }
else if(commandIs("rolld6", message)){ }

关于javascript - 如何避免同时发送两个命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42987971/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com