* Use a primary autoincrementing primary key because primary keys need to be unique * Cache whitelist on bot startup / only read from database once * "Externalize" whitelist checking to the messageCreate function.
This commit is contained in:
parent
c9d7a54e25
commit
ba88243dea
5 changed files with 56 additions and 46 deletions
29
server.js
29
server.js
|
@ -1,6 +1,7 @@
|
|||
const fs = require('fs');
|
||||
const createInitialConfig = require("./util/createInitialConfig")
|
||||
const convertJSONToSQL = require('./util/timer/convertJSONToSQL');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
if(!fs.existsSync("./data/config.json")) {
|
||||
createInitialConfig();
|
||||
}
|
||||
|
@ -43,8 +44,36 @@ const {
|
|||
client.settings = new Collection();
|
||||
client.commands = new Collection();
|
||||
client.serverPrefixes = new Collection();
|
||||
client.whitelist = new Collection();
|
||||
|
||||
|
||||
|
||||
async function loadWhitelist(clientWhitelist) {
|
||||
const db = new sqlite3.Database('data/database.db');
|
||||
let rows = await new Promise((resolve) => {
|
||||
db.all(`SELECT * FROM whitelist`, function (error, rows){
|
||||
if(error){
|
||||
console.error("Failed to read whitelist table")
|
||||
console.error(error);
|
||||
resolve([]);
|
||||
}else{
|
||||
resolve(rows);
|
||||
}
|
||||
});
|
||||
});
|
||||
rows.forEach(row => {
|
||||
if(clientWhitelist.has(row.serverId)){
|
||||
let oldEntry = clientWhitelist.get(row.serverId);
|
||||
oldEntry.push(row.command)
|
||||
clientWhitelist.set(row.serverId, oldEntry)
|
||||
}else {
|
||||
clientWhitelist.set(row.serverId, [row.command])
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
loadWhitelist(client.whitelist);
|
||||
|
||||
client.settings.set("presenceType", presenceType);
|
||||
client.settings.set("presenceText", presenceText);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue