0

我试图制作一个字符琐事机器人,当我编写 .tc 时,它会显示一个随机字符,您必须在 15 秒内回答该字符的名称,它的代码在一个名为 triviachar.js 的文件中,所有答案变体作为变量放在名为 triviacharacterlist.js 的 js 文件中,但我遇到了一个问题,其中一些答案变体可以工作,但其他人不能。这是我什至遇到过的最奇怪的机器人行为,所以如果你能帮助我,这将意味着很多,这里是代码。(我也不擅长编程)(顺便说一句,我正在使用 discord.js-commando):

(这些文件中还有更多代码,但与此相同)

triviachar.js:

run(msg) {
    const fivePoint = "Be3 bo6 u have asnwer correct, but u have answer without anime/game name so u get 5 points only lel";
    const tenPoint = "Bo3 bo6 u have answer correct with anime/game name so u get 10 points instead pog"
    const guessCharacterString = "Guess character bo3"
    var characterRandom = Math.floor(Math.random() * 5);

    if (characterRandom == 0) {
        const iKF = Characters.KiritoVariants;
        const triviaKiritoEmbed = new MessageEmbed()
            .setColor('#008fff')
            .setTitle(guessCharacterString)
            .setImage(Characters.CharacterImgs.kiritoimg)
    
        msg.channel.send(triviaKiritoEmbed)

        const filterK = m => m.content.includes(iKF.kirito0 || iKF.kirito1 || iKF.kirito2 || iKF.kirito3 || iKF.kirito4 || iKF.kirito5 || iKF.kirito6 || iKF.kirito7 || iKF.kirito8);
        msg.channel.awaitMessages(filterK, { max: 1, time: 15000, errors: ['time'] })
        .then(collected => {switch(collected.first().content){
            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'));
    }

琐事characterlist.js:

//character images -------------------------------------------------------------------------------------------------------------
const CharacterImgs = {
    kiritoimg: "https://i.pinimg.com/originals/05/b8/d9/05b8d9a934b8d831fef385e7f60b5625.jpg",
    asunaimg: "https://pm1.narvii.com/6210/87c8712f955134bdbfe4135fbded8366ea21f917_00.jpg",
    jojoimg: "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/f6ec6f25-09b6-414d-aeac-9a7cb7527ee7/dcdtfn4-618039ef-f3ee-4333-90a0-208fb4d0db2d.png?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1cm46YXBwOiIsImlzcyI6InVybjphcHA6Iiwib2JqIjpbW3sicGF0aCI6IlwvZlwvZjZlYzZmMjUtMDliNi00MTRkLWFlYWMtOWE3Y2I3NTI3ZWU3XC9kY2R0Zm40LTYxODAzOWVmLWYzZWUtNDMzMy05MGEwLTIwOGZiNGQwZGIyZC5wbmcifV1dLCJhdWQiOlsidXJuOnNlcnZpY2U6ZmlsZS5kb3dubG9hZCJdfQ.QpJ2Po7ZB8AlZsmtuMH1O6zg7GpGWMo_RW-126L8ftI",
    dekuimg: "https://media.discordapp.net/attachments/472313197836107780/606995677737779211/XokvvZc.png",
    senkuimg: "https://pm1.narvii.com/7346/a2bb65cfca86e3d2bf85f1b12e2132af3d43f5f6r1-736-1041v2_uhq.jpg"
};

//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'
};

这些是不和谐的图像: https://i.stack.imgur.com/RkAf6.png https://i.stack.imgur.com/gfBAh.png

4

1 回答 1

0

您的消息收集器过滤器设置错误。用 a 链接变量||不会达到您打算使用它的目的。有关更多信息,请查看逻辑 OR 运算符

简而言之,您的消息收集器过滤器仅收集其内容包含 的值的消息iKF.kirito0

解决此问题的方法是将所有值存储在一个数组中,并检查消息是否至少包含该数组的一个值。请参阅下面的代码示例。

const possibleAnswers = [iKF.kirito0, iKF.kirito1, iKF.kirito2, etc...];

const filterK = m => possibleAnswers.some(answer => m.content.includes(answer));
于 2021-01-27T15:06:15.043 回答