From 8f506f9e767b5e182d325326d73d38f74faa48b6 Mon Sep 17 00:00:00 2001 From: Snazzah Date: Tue, 11 Aug 2020 19:45:59 -0500 Subject: [PATCH] Fix database, have role perms work in DMs --- config/_default.js | 14 +++++++++++--- src/bot.js | 7 +++---- src/database.js | 24 +++++++++--------------- src/util.js | 32 ++++++++++++++++---------------- 4 files changed, 39 insertions(+), 38 deletions(-) diff --git a/config/_default.js b/config/_default.js index a0a921c..5ad42b4 100644 --- a/config/_default.js +++ b/config/_default.js @@ -2,7 +2,7 @@ module.exports = { // [string] The token for the bot token: "", // [string] The prefix for the bot - prefix: "L!", + prefix: "!", // [Array] An array of elevated IDs, giving them access to developer commands elevated: [], // [string] The path where the commands will be found @@ -15,6 +15,8 @@ module.exports = { curatorRoleID: "", // [string] admin_role_id adminRoleID: "", + // [string] guild_id + guildID: "", // [string] sdk_url sdkURL: "", // [Object] Eris client options (https://abal.moe/Eris/docs/Client) @@ -30,11 +32,17 @@ module.exports = { intents: [ "guilds", "guildEmojis", - "guildWebhooks", "guildMessages", "guildMessageReactions", "directMessages", "directMessageReactions" - ] // 13865 - Intent Raw. + ] + }, + // [Object] Redis config + redis: { + host: "localhost", + port: 6379, + password: "", + prefix: "lbrycurate:" } } \ No newline at end of file diff --git a/src/bot.js b/src/bot.js index d8e48b2..13fc6a2 100644 --- a/src/bot.js +++ b/src/bot.js @@ -31,7 +31,6 @@ class CurateBot extends Eris.Client { ] }); this.logger.setGlobal(); - this.config = config; this.typingIntervals = new Map(); // Events @@ -79,18 +78,18 @@ class CurateBot extends Eris.Client { async start() { // Redis this.db = new Database(this); - await this.db.connect(this.config.redis); + await this.db.connect(config.redis); // Discord await this.connect(); await this.waitTill('ready'); this.editStatus('online', { - name: `${this.config.prefix}help`, + name: `${config.prefix}help`, type: 3, }); // Commands - this.cmds = new CommandLoader(this, path.join(this.dir, this.config.commandsPath)); + this.cmds = new CommandLoader(this, path.join(this.dir, config.commandsPath)); this.cmds.reload(); this.cmds.preloadAll(); diff --git a/src/database.js b/src/database.js index b78140e..2faa71c 100644 --- a/src/database.js +++ b/src/database.js @@ -16,10 +16,10 @@ module.exports = class Database extends EventEmitter { * Creates a client and connects to the database * @param {Object} options */ - connect({ host = 'localhost', port, password }) { + connect({ host = 'localhost', port, password, prefix }) { console.info('Connecting to redis...'); return new Promise((resolve, reject) => { - this.redis = redis.createClient({ host, port, password }); + this.redis = redis.createClient({ host, port, password, prefix }); this.redis.on('error', this.onError.bind(this)); this.redis.on('warning', w => console.warn('Redis Warning', w)); this.redis.on('end', () => this.onClose.bind(this)); @@ -35,16 +35,10 @@ module.exports = class Database extends EventEmitter { }); } - /** - * @private - * @param {string} k Key - */ - _p(k) { return (this.client.config.prefix || '') + k; } - // #region Redis functions hget(key, hashkey) { return new Promise((resolve, reject) => { - this.redis.HGET(this._p(key), hashkey, (err, value) => { + this.redis.HGET(key, hashkey, (err, value) => { if (err) reject(err); resolve(value); }); @@ -53,7 +47,7 @@ module.exports = class Database extends EventEmitter { hset(key, hashkey, value) { return new Promise((resolve, reject) => { - this.redis.HSET(this._p(key), hashkey, value, (err, res) => { + this.redis.HSET(key, hashkey, value, (err, res) => { if (err) reject(err); resolve(res); }); @@ -62,7 +56,7 @@ module.exports = class Database extends EventEmitter { incr(key) { return new Promise((resolve, reject) => { - this.redis.incr(this._p(key), (err, res) => { + this.redis.incr(key, (err, res) => { if (err) reject(err); resolve(res); }); @@ -71,7 +65,7 @@ module.exports = class Database extends EventEmitter { get(key) { return new Promise((resolve, reject) => { - this.redis.get(this._p(key), function(err, reply) { + this.redis.get(key, function(err, reply) { if (err) reject(err); resolve(reply); }); @@ -80,7 +74,7 @@ module.exports = class Database extends EventEmitter { expire(key, ttl) { return new Promise((resolve, reject) => { - this.redis.expire(this._p(key), ttl, (err, value) => { + this.redis.expire(key, ttl, (err, value) => { if (err) reject(err); resolve(value); }); @@ -90,7 +84,7 @@ module.exports = class Database extends EventEmitter { exists(key) { return new Promise((resolve, reject) => { - this.redis.exists(this._p(key), (err, value) => { + this.redis.exists(key, (err, value) => { if (err) reject(err); resolve(value === 1); }); @@ -99,7 +93,7 @@ module.exports = class Database extends EventEmitter { set(key, value) { return new Promise((resolve, reject) => { - this.redis.set(this._p(key), value, (err, res) => { + this.redis.set(key, value, (err, res) => { if (err) reject(err); resolve(res); }); diff --git a/src/util.js b/src/util.js index b596b3b..2ebc874 100644 --- a/src/util.js +++ b/src/util.js @@ -151,26 +151,26 @@ Util.CommandPermissions = { guild: (_, message) => !!message.guildID, elevated: (client, message) => client.config.elevated.includes(message.author.id), curator: (client, message) => { - if (!message.guildID) return false; - // Server owner or elevated users - if (message.channel.guild.ownerID == message.author.id || - Util.CommandPermissions.elevated(client, message)) return true; - return message.member.roles.includes(config.curatorRoleID); + const member = message.guildID ? message.member : + client.guilds.get(config.guildID).members.get(message.author.id); + if (!member) return false; + if (Util.CommandPermissions.elevated(client, message)) return true; + return member.roles.includes(config.curatorRoleID); }, admin: (client, message) => { - if (!message.guildID) return false; - // Server owner or elevated users - if (message.channel.guild.ownerID == message.author.id || - Util.CommandPermissions.elevated(client, message)) return true; - return message.member.roles.includes(config.adminRoleID); + const member = message.guildID ? message.member : + client.guilds.get(config.guildID).members.get(message.author.id); + if (!member) return false; + if (Util.CommandPermissions.elevated(client, message)) return true; + return member.roles.includes(config.adminRoleID); }, curatorOrAdmin: (client, message) => { - if (!message.guildID) return false; - // Server owner or elevated users - if (message.channel.guild.ownerID == message.author.id || - Util.CommandPermissions.elevated(client, message)) return true; - return message.member.roles.includes(config.curatorRoleID) || - message.member.roles.includes(config.adminRoleID); + const member = message.guildID ? message.member : + client.guilds.get(config.guildID).members.get(message.author.id); + if (!member) return false; + if (Util.CommandPermissions.elevated(client, message)) return true; + return member.roles.includes(config.curatorRoleID) || + member.roles.includes(config.adminRoleID); }, };