Капча не работает для моего бота Discord

#javascript #discord.js #captcha

Вопрос:

Я пытался сделать капчу на своем боте discord. Я совершенно новичок в JavaScript и изо всех сил пытаюсь понять проблемы. Но дело не в этом. Когда я выполняю «повторную проверку» в чате, это не работает. Он тоже ничего не регистрирует. Он просто ничего не делает без ошибок.

Код:

     const Discord = require('discord.js-12');

    const client = new Discord.Client();

    const prefix = 'ri-';

    const Captcha = require("@haileybot/captcha-generator");

    client.once('ready', () => {
        console.log('Ready!');
    });
    let captcha = new Captcha();
    console.log(captcha.value);
     

    const path = require("path"),
        fs = require("fs")



    captcha.PNGStream.pipe(fs.createWriteStream(path.join(__dirname, `${captcha.value}.png`)));
    captcha.JPEGStream.pipe(fs.createWriteStream(path.join(__dirname, `${captcha.value}.jpeg`)));
     
    client.on('message', async message => {
        if (!message.content.startsWith(prefix) || message.author.bot) return;

        const args = message.content.slice(prefix.length).trim().split(/  /);

        const command = args.shift().toLowerCase();

        if (command === 'verification') {
            function verifyHuman(msg) {
                let captcha = new Captcha();
                msg.channel.send(
                    "**Enter the text shown in the image below:**",
                    new Discord.MessageAttachment(captcha.JPEGStream, "captcha.jpeg")
                );
                let collector = msg.channel.createMessageCollector(m => m.author.id === msg.author.id);
                collector.on("collect", m => {
                    if (m.content.toUpperCase() === captcha.value) msg.channel.send("Verified Successfully!");
                    else msg.channel.send("Failed Verification!");
                    collector.stop();
                });
            };

        }
    });
            

    client.login('');
 

Ответ №1:

Вы помещаете функцию внутри оператора if. Почти уверен, что вы не можете этого сделать. Либо поместите функцию вне оператора, либо поместите содержимое внутри нее в оператор if.

Я объясню это подробнее в вашем DMs 🙂