Javascript 我做了一个混乱的游戏命令,但由于某种原因,大写字母使机器人崩溃

Javascript 我做了一个混乱的游戏命令,但由于某种原因,大写字母使机器人崩溃,javascript,discord.js,Javascript,Discord.js,我做了一个小小的命令,如果有人,例如,输入&扰码apple,bot会发送“单词是:paple”。它按预期工作,但当前的问题是,如果有人发送“苹果”而不是“苹果”,机器人就会崩溃,说它无法获取未定义的作者 module.exports={ 名称:'scramble', 执行(消息,参数){ const Discord=require('Discord.js') 让givenword=args.slice(0).join(“”); 函数加扰(givenword){ var word=givenwor

我做了一个小小的命令,如果有人,例如,输入
&扰码apple
,bot会发送“单词是:paple”。它按预期工作,但当前的问题是,如果有人发送“苹果”而不是“苹果”,机器人就会崩溃,说它无法获取未定义的作者

module.exports={
名称:'scramble',
执行(消息,参数){
const Discord=require('Discord.js')
让givenword=args.slice(0).join(“”);
函数加扰(givenword){
var word=givenword.split(“”)
n=字长
对于(变量i=n-1;i>0;i--){
var j=Math.floor(Math.random()*(i+1));
var tmp=单词[i];
单词[i]=单词[j]
字[j]=tmp;
}
返回word.join(“”)
}
加扰字=加扰(给定字)
const embed=new Discord.MessageEmbed()
.setTitle('加扰时间!')
.setColor(“随机”)
.setDescription(“单词是:”+DWORD)
.setFooter('您有30秒的时间来尝试和猜测,第一个回答正确的人')
message.channel.send({embed});
message.delete()
const filter=m=>m.content.includes(给定词);
const collector=message.channel.createMessageCollector(过滤器,{time:30000});
collector.on('collect',m=>{
log(`Collected${m.content}`);
});
collector.on('end',collected=>{
message.channel.send(`collected.first().author}首先得到了正确的答案!答案是${givenword}`);
log(`Collected${Collected.size}items`);
});
}
}

谁能帮我一下吗?

有两个错误:

  • 你需要处理不匹配的情况。我建议,在拼凑单词之前,将其小写,并在评估之前将回答小写
  • 你需要处理没有做出正确猜测的情况
    collected.first()
    未定义,因为没有赢家。我建议在打印获奖者之前检查获奖者
  • if(collected.length
    
    var word= givenword.toLowercase().split("")
    
    const filter = m => m.content.toLowercase().includes(give word)
    
    if (collected.length <= 0) {
    // send no winner message
    } else {
    // send the winner message
    }