Fix database, have role perms work in DMs

This commit is contained in:
Snazzah 2020-08-11 19:45:59 -05:00
parent be6075e72a
commit 8f506f9e76
No known key found for this signature in database
GPG key ID: 5E71D54F3D86282E
4 changed files with 39 additions and 38 deletions

View file

@ -2,7 +2,7 @@ module.exports = {
// [string] The token for the bot
token: "",
// [string] The prefix for the bot
prefix: "L!",
prefix: "!",
// [Array<string>] 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:"
}
}

View file

@ -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();

View file

@ -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);
});

View file

@ -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);
},
};