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