【发布时间】:2019-07-16 12:12:58
【问题描述】:
我尝试发出一个掷硬币命令,用户输入.cf heads,机器人会向他显示他的答案、结果以及他们是赢还是输。
我尝试使用args,但没有它,但它不起作用;我的代码有错误:
bot.on('message', message => {
const prefix = '.';
if (!message.content.startsWith(prefix)) return;
const args = message.content.slice(prefix.length).trim().split(/ +/g)
const cmd = args.shift().toLowerCase();
var choice = 'h';
if (args[1] != undefined)
args[1] = args[1].toLowerCase();
if (args[1] == 'heads' || args[1] == 'h' || args[1] == 'head')
choice = 'h';
else if (args[1] == 'tails' || args[1] == 't' || args[1] == 'tail')
choice = 't';
if (cmd === 'cf' || cmd === 'coin' || cmd === 'flip' || cmd ===
'coinflip') {
var coins = [
"heads",
"tails"
];
coinz = coins[Math.floor(Math.random() * coins.length)];
if (choice != coinz) {
message.channel.send(`Your bet: \`${args[1]}\`,
outcome: \`${coinz}\` you lose`);
} else {
message.channel.send(`Your bet: \`${args[1]}\`,
outcome: \`${coinz}\` you win`);
};
};
});
代码有效,但它让我 100% 失败,有时${args[1]} 未定义,尽管我输入了heads、h 或head; ${coinz} 每次都是尾巴。
【问题讨论】:
-
似乎决定了以太是赢还是输,你将
choice变量与coinz进行比较。但是,使用您的代码,“choice”只能是“h”或“t”,而“coinz”将是“heads”或“tails”。这种比较总是会返回 false,告诉你这是一个损失 -
未定义的 args[1] 来自您的
args.shift()call。移动一个数组会从这个数组中删除第一个元素,所以一旦你提取了“cmd”变量,你的参数现在存储在 args[0] 中。 -
@Gruntzy 因为这是一个答案,您可以这样发布吗?这样作者可以接受它并关闭问题;)
-
@Gruntzy 所以你的意思是我应该删除 `arts. Shift() 并用 h 和 t 替换 coinz??
标签: javascript node.js discord.js coin-flipping