繁体   English   中英

在这种情况下不知道如何更改为小写

[英]Don't know how to change to lowercase in this scenario

我正在尝试使用 discord.js awaitMessages方法,但它似乎不适用于大写字母,因为我可能的答案( triviacharacterslist.js )都是小写的。 我试图转换它(在代码中),但它似乎不起作用。

triviachar.js

const iKF = Characters.KiritoVariants;
        const possibleAnswers = [iKF.kirito0, iKF.kirito1, iKF.kirito2, iKF.kirito3, iKF.kirito4, iKF.kirito5, iKF.kirito6, iKF.kirito7, iKF.kirito8];
        const triviaKiritoEmbed = new MessageEmbed()
            .setColor('#008fff')
            .setTitle(guessCharacterString)
            .setImage(Characters.CharacterImgs.kiritoimg)
    
        msg.channel.send(triviaKiritoEmbed)

        const filterK = m => possibleAnswers.some(answer => m.content.includes(answer));
        msg.channel.awaitMessages(filterK, { max: 1, time: 15000, errors: ['time'] })
        .then(collected => {switch(collected.first().content.toLowerCase()){
            case Characters.KiritoVariants.kirito0:
                msg.channel.send(fivePoint);
                break;
            case Characters.KiritoVariants.kirito3:
                msg.channel.send(fivePoint);
                break;
            case Characters.KiritoVariants.kirito6:
                msg.channel.send(fivePoint);
                break;
            case Characters.KiritoVariants.kirito1:
                msg.channel.send(tenPoint);
                break;
            case Characters.KiritoVariants.kirito2:
                msg.channel.send(tenPoint);
                break;
            case Characters.KiritoVariants.kirito4:
                msg.channel.send(tenPoint);
                break;
            case Characters.KiritoVariants.kirito5:
                msg.channel.send(tenPoint);
                break;
            case Characters.KiritoVariants.kirito7:
                msg.channel.send(tenPoint);
                break;
            case Characters.KiritoVariants.kirito8:
                msg.channel.send(tenPoint);
                break;
        }})
        .catch(collected => msg.channel.send('too bad u took too long ya 3am'));
    }

triviacharacterslist.js

//character names ---------------------------------------------------------------------------------------------------------------

const KiritoVariants = {
    kirito0: 'kirito',
    kirito1: 'kirito sao',
    kirito2: 'kirito sword art online',
    kirito3: 'kazuto',
    kirito4: 'kazuto sao',
    kirito5: 'kazuto sword art online',
    kirito6: 'kazuto kirigaya',
    kirito7: 'kazuto kirigaya sao',
    kirito8: 'kazuto kirigaya sword art online'
};

我认为@Zsolt有正确的想法,但执行有点错误。 由于您的所有答案都已经是小写字母,因此在答案字符串上调用.toLowerCase()不会有太大作用。 相反,您需要对字符串内容调用.toLowerCase() 请参见下面的示例:

const filterK = m => possibleAnswers.some(answer => m.content.toLowerCase().includes(answer));

includes()方法区分大小写:

 const str1 = 'kirito sword art online' const str2 = 'Kirito sword art online' console.log(str1.includes(str2))

您可以在过滤器中使用m.content.toLowerCase()将用户的答案转换为小写:

const filterK = m => possibleAnswers.some(answer => m.content.toLowerCase().includes(answer));

您还可以简化 switch 语句并使用Object.valuespossibleAnswers中获取值数组:

const possibleAnswers = Object.values(Characters.KiritoVariants);
const triviaKiritoEmbed = new MessageEmbed()
  .setColor('#008fff')
  .setTitle(guessCharacterString)
  .setImage(Characters.CharacterImgs.kiritoimg);

msg.channel.send(triviaKiritoEmbed);

const filterK = (m) =>
  possibleAnswers.some((answer) => m.content.toLowerCase().includes(answer));

msg.channel
  .awaitMessages(filterK, { max: 1, time: 15000, errors: ['time'] })
  .then((collected) => {
    switch (collected.first().content.toLowerCase()) {
      case Characters.KiritoVariants.kirito0:
      case Characters.KiritoVariants.kirito3:
      case Characters.KiritoVariants.kirito6:
        msg.channel.send(fivePoint);
        break;
      case Characters.KiritoVariants.kirito1:
      case Characters.KiritoVariants.kirito2:
      case Characters.KiritoVariants.kirito4:
      case Characters.KiritoVariants.kirito5:
      case Characters.KiritoVariants.kirito7:
      case Characters.KiritoVariants.kirito8:
        msg.channel.send(tenPoint);
        break;
    }
  })
  .catch((collected) => msg.channel.send('too bad u took too long ya 3am'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM