mirror of
https://github.com/LBRYFoundation/curate.git
synced 2025-08-23 17:37:25 +00:00
Fix database, have role perms work in DMs
This commit is contained in:
parent
be6075e72a
commit
8f506f9e76
4 changed files with 39 additions and 38 deletions
|
@ -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:"
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
|
32
src/util.js
32
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);
|
||||
},
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue