我该如何在Discord.js机器人中实施许可证密钥?

时间:2020-07-03 21:19:22

标签: javascript node.js discord discord.js

我今天是在StackOverflow上问这个问题的。我该如何为Discord机器人实施串行密钥?我要这样做,如果您还没有输入序列号,那么所有命令都将无效。我不希望序列号被重复使用或在其他行会中使用。我现在有点困惑,有人可以帮我指出我应该做什么吗?

1 个答案:

答案 0 :(得分:0)

如果您有mysql数据库,则可以按照以下步骤进行操作:

const mysql = require("mysql")

/* ------------------------------------------------- *
 *             On Recieved Message                   *
 * ------------------------------------------------- */
client.on('message', async message => {
    // ...

    var active = false;

    // if server has active key already
    Database.query(`select * from table where server = '${client.guilds.get(message.guild.id).id}'`, (err, rows) => {
        if (err) return console.log(err)
        if (!rows || rows.length <= 0) {
            return Database.query(`Insert into table (id, active) values (${client.guilds.get(message.guild.id).id}, false)`)
        }

        active = rows[0].active
    })

    // activate key
    if (message.content.startsWith('!activate')) {

        // if key exists in table: key
        Database.query(`select * from keys where key = '${message.content.split(" ")[1]}'`, (err, rows) => {
            if (err) return console.log(err)
            if (!rows || rows.lenght <= 0) {
                return message.channel.send('Invalid code')
            } else {
                let key = rows[0].key
                    // if key exists remove and update server table
                Database.query(`update server set active = 'true' where id = '${client.guilds.get(message.guild.id).id}'`, (err, rows) => {
                    if (err) return console.log(err)
                    active = true;

                    Database.query(`Delete from keys where key = '${key}'`)

                })
            }
        })
    }

    // if server has active key let them continue else return them
    if (!active == 'true') return;
    // Command handler;

});

关于生成密钥,请您自行决定。 (如果您不了解,请查看uuid生成器。)