【问题标题】:Discord.js captcha channel base64 issueDiscord.js 验证码通道 base64 问题
【发布时间】:2021-01-17 19:49:00
【问题描述】:

所以已经向所有人问好,尤其是那些愿意帮助我的人,我有一个项目来验证用户,这要归功于哈希解密挑战系统 (base64),当他们成功时,它会给他们一个角色检查一下,我做了很好的一部分,但它不对我不明白我的错误!机器人连接,0 个代码错误,但验证不起作用我希望在频道中而不是在 DM 中完成验证!谢谢

const Discord = require('discord.js')
const client = new Discord.Client();
const prefix = "&";

let rawdata = fs.readFileSync('config.json');
let object = JSON.parse(rawdata);
var channel_id = object['verification_channelID']
var guild_id = object['guild_ID']
var role_name = object['verification_role_name']
var server_invite = object['server_invite']
var token = object['bot_token']
var questions = object['questions']

var dict = {};

var encodingQuestions = []
questions.forEach(element => {
    encodingQuestions.push(element)
});

client.on('ready', function(){
    console.log("Login : " + client.user.tag);
})


client.on('guildMemberAdd', member => {
    var uname = member.user.username
    var disc = member.user.discriminator
    var memberID = member.user.id
    var rand = Math.random();
    rand *= encodingQuestions.length;
    rand = Math.floor(rand);
    var question = encodingQuestions[rand]
    dict[uname] = [Buffer.from(question, 'base64').toString('utf-8'), 3];
    const embed = new Discord.MessageEmbed()
        .setTitle(uname + "#" + disc)
        .setColor(0x1e90ff)
        .addField(uname='Welcome', value='Welcome <@' + memberID + '> Déchiffrer le code , vous avez 3 essais ! Utilisez ``&answer {decoded message}`` ', inline=false)
        .addField(uname='Question', value=question, inline=false)
    member.send(embed)
    member.guild.channels.cache.get(channel_id).send("Welcome <@" + memberID + "> Regarder vos DM pour accédez au serveur !")
});

client.on('message', message => {
    var memberid = message.author.id;
    var memberuname = message.author.username;
    var messagecontent = message.content;
    var messageID = message.id;
    var disc = message.author.discriminator;
    if (!message.content.startsWith(prefix)) return;

    if (message.content.startsWith(prefix + 'answer') && message.channel.type === "dm"){
        var msg = message.toString().replace('&answer ', '')
        for (var key in dict){
            if (key == message.author.username){
                if (msg == dict[key][0]){
                    message.channel.send("Vous avez passer le test !")
                    var role = client.guilds.cache.get(guild_id).roles.cache.find(role => role.name === role_name)
                    client.guilds.cache.get(guild_id).members.cache.get(message.author.id).roles.add(role);
                    var memberID = message.author.id
                    client.channels.cache.get(channel_id).send("Trés bien <@" + memberID + "> vous avez réussis le test avec succèes !")
                    
                    delete dict[key];
                } else{
                    dict[key][1] = dict[key][1] - 1
                    if (dict[key][1] == 0){
                        memberID = message.author.id
                        message.channel.send("Vous avez pas réussis le test vous allez êtres exclus ! Revenir sur Paradox : " + server_invite)
                        client.channels.cache.get(channel_id).send("<@" + memberID + "> Vous avez échoué le test...")
                        setTimeout(function(){
                            client.guilds.cache.get(guild_id).members.cache.get(message.author.id).kick()
                        }, 5000)
                    } else{
                        message.channel.send("Réessayer !")
                    }
                }
            }
        } 
    }
})
client.login(token);

The database config.json : 

{
    "bot_token": "TOKEN",
    "verification_channelID": "",
    "guild_ID": "",
    "verification_role_name": "",
    "server_invite": "",
    "questions": ["eW91IHBhc3NlZA==", "dGhpcyB3YXMgZWFzeQ==", "dGhhbmtzIGZvciBqb2luaW5n", "ZW5qb3kgeW91ciBzdGF5", "dGhhbmtzIGZvciBub3QgYmVpbmcgYW5vbnltb3Vz", "ZW5qb3kgeW91ciBzdGF5", "aW52aXRlIHlvdXIgZnJpZW5kcyE="]
}

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    你应该使用:

    client.on('guildMemberAdd', member => {
        var uname = member.user.username
        var disc = member.user.discriminator
        var memberID = member.user.id
        var rand = Math.random();
        rand *= encodingQuestions.length;
        rand = Math.floor(rand);
        var question = encodingQuestions[rand]
        dict[uname] = [Buffer.from(question, 'base64').toString('utf-8'), 3];
        const embed = new Discord.MessageEmbed()
            .setTitle(uname + "#" + disc)
            .setColor(0x1e90ff)
            .addField('Welcome', 'Welcome <@' + memberID + '> Déchiffrer le code , vous avez 3 essais ! Utilisez ``&answer {decoded message}`` ', false)
            .addField('Question', question, false)
        member.send(embed)
        member.guild.channels.cache.get(channel_id).send("Welcome <@" + memberID + "> Regarder vos DM pour accédez au serveur !")
    });
    

    我更新了嵌入部分,你应该使用.addField('coucou', 'salut', true);而不是.addField(name='coucou', value='name', inline=true)。这是javascript函数参数语法。

    【讨论】:

    • 感谢您的帮助,我会尝试的朋友。
    猜你喜欢
    • 2021-04-16
    • 2020-10-28
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    相关资源
    最近更新 更多