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

2022-07-24 00:00:00 discord node.js javascript discord.js

我今天来StackOverflow问这个问题。我该如何为我的不和谐机器人实现一个序列密钥呢?我想这样做,如果您没有输入您的序列密钥,那么所有命令都不会起作用。我不希望序列密钥被重复使用,或在其他行会中使用。我现在有点困惑,有没有人能帮帮我,指出我应该怎么做?


解决方案

如果您有一个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生成器。)


相关文章