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
|
// [string] The token for the bot
|
||||||
token: "",
|
token: "",
|
||||||
// [string] The prefix for the bot
|
// [string] The prefix for the bot
|
||||||
prefix: "L!",
|
prefix: "!",
|
||||||
// [Array<string>] An array of elevated IDs, giving them access to developer commands
|
// [Array<string>] An array of elevated IDs, giving them access to developer commands
|
||||||
elevated: [],
|
elevated: [],
|
||||||
// [string] The path where the commands will be found
|
// [string] The path where the commands will be found
|
||||||
|
@ -15,6 +15,8 @@ module.exports = {
|
||||||
curatorRoleID: "",
|
curatorRoleID: "",
|
||||||
// [string] admin_role_id
|
// [string] admin_role_id
|
||||||
adminRoleID: "",
|
adminRoleID: "",
|
||||||
|
// [string] guild_id
|
||||||
|
guildID: "",
|
||||||
// [string] sdk_url
|
// [string] sdk_url
|
||||||
sdkURL: "",
|
sdkURL: "",
|
||||||
// [Object] Eris client options (https://abal.moe/Eris/docs/Client)
|
// [Object] Eris client options (https://abal.moe/Eris/docs/Client)
|
||||||
|
@ -30,11 +32,17 @@ module.exports = {
|
||||||
intents: [
|
intents: [
|
||||||
"guilds",
|
"guilds",
|
||||||
"guildEmojis",
|
"guildEmojis",
|
||||||
"guildWebhooks",
|
|
||||||
"guildMessages",
|
"guildMessages",
|
||||||
"guildMessageReactions",
|
"guildMessageReactions",
|
||||||
"directMessages",
|
"directMessages",
|
||||||
"directMessageReactions"
|
"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.logger.setGlobal();
|
||||||
this.config = config;
|
|
||||||
this.typingIntervals = new Map();
|
this.typingIntervals = new Map();
|
||||||
|
|
||||||
// Events
|
// Events
|
||||||
|
@ -79,18 +78,18 @@ class CurateBot extends Eris.Client {
|
||||||
async start() {
|
async start() {
|
||||||
// Redis
|
// Redis
|
||||||
this.db = new Database(this);
|
this.db = new Database(this);
|
||||||
await this.db.connect(this.config.redis);
|
await this.db.connect(config.redis);
|
||||||
|
|
||||||
// Discord
|
// Discord
|
||||||
await this.connect();
|
await this.connect();
|
||||||
await this.waitTill('ready');
|
await this.waitTill('ready');
|
||||||
this.editStatus('online', {
|
this.editStatus('online', {
|
||||||
name: `${this.config.prefix}help`,
|
name: `${config.prefix}help`,
|
||||||
type: 3,
|
type: 3,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Commands
|
// 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.reload();
|
||||||
this.cmds.preloadAll();
|
this.cmds.preloadAll();
|
||||||
|
|
||||||
|
|
|
@ -16,10 +16,10 @@ module.exports = class Database extends EventEmitter {
|
||||||
* Creates a client and connects to the database
|
* Creates a client and connects to the database
|
||||||
* @param {Object} options
|
* @param {Object} options
|
||||||
*/
|
*/
|
||||||
connect({ host = 'localhost', port, password }) {
|
connect({ host = 'localhost', port, password, prefix }) {
|
||||||
console.info('Connecting to redis...');
|
console.info('Connecting to redis...');
|
||||||
return new Promise((resolve, reject) => {
|
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('error', this.onError.bind(this));
|
||||||
this.redis.on('warning', w => console.warn('Redis Warning', w));
|
this.redis.on('warning', w => console.warn('Redis Warning', w));
|
||||||
this.redis.on('end', () => this.onClose.bind(this));
|
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
|
// #region Redis functions
|
||||||
hget(key, hashkey) {
|
hget(key, hashkey) {
|
||||||
return new Promise((resolve, reject) => {
|
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);
|
if (err) reject(err);
|
||||||
resolve(value);
|
resolve(value);
|
||||||
});
|
});
|
||||||
|
@ -53,7 +47,7 @@ module.exports = class Database extends EventEmitter {
|
||||||
|
|
||||||
hset(key, hashkey, value) {
|
hset(key, hashkey, value) {
|
||||||
return new Promise((resolve, reject) => {
|
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);
|
if (err) reject(err);
|
||||||
resolve(res);
|
resolve(res);
|
||||||
});
|
});
|
||||||
|
@ -62,7 +56,7 @@ module.exports = class Database extends EventEmitter {
|
||||||
|
|
||||||
incr(key) {
|
incr(key) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.redis.incr(this._p(key), (err, res) => {
|
this.redis.incr(key, (err, res) => {
|
||||||
if (err) reject(err);
|
if (err) reject(err);
|
||||||
resolve(res);
|
resolve(res);
|
||||||
});
|
});
|
||||||
|
@ -71,7 +65,7 @@ module.exports = class Database extends EventEmitter {
|
||||||
|
|
||||||
get(key) {
|
get(key) {
|
||||||
return new Promise((resolve, reject) => {
|
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);
|
if (err) reject(err);
|
||||||
resolve(reply);
|
resolve(reply);
|
||||||
});
|
});
|
||||||
|
@ -80,7 +74,7 @@ module.exports = class Database extends EventEmitter {
|
||||||
|
|
||||||
expire(key, ttl) {
|
expire(key, ttl) {
|
||||||
return new Promise((resolve, reject) => {
|
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);
|
if (err) reject(err);
|
||||||
resolve(value);
|
resolve(value);
|
||||||
});
|
});
|
||||||
|
@ -90,7 +84,7 @@ module.exports = class Database extends EventEmitter {
|
||||||
|
|
||||||
exists(key) {
|
exists(key) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.redis.exists(this._p(key), (err, value) => {
|
this.redis.exists(key, (err, value) => {
|
||||||
if (err) reject(err);
|
if (err) reject(err);
|
||||||
resolve(value === 1);
|
resolve(value === 1);
|
||||||
});
|
});
|
||||||
|
@ -99,7 +93,7 @@ module.exports = class Database extends EventEmitter {
|
||||||
|
|
||||||
set(key, value) {
|
set(key, value) {
|
||||||
return new Promise((resolve, reject) => {
|
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);
|
if (err) reject(err);
|
||||||
resolve(res);
|
resolve(res);
|
||||||
});
|
});
|
||||||
|
|
32
src/util.js
32
src/util.js
|
@ -151,26 +151,26 @@ Util.CommandPermissions = {
|
||||||
guild: (_, message) => !!message.guildID,
|
guild: (_, message) => !!message.guildID,
|
||||||
elevated: (client, message) => client.config.elevated.includes(message.author.id),
|
elevated: (client, message) => client.config.elevated.includes(message.author.id),
|
||||||
curator: (client, message) => {
|
curator: (client, message) => {
|
||||||
if (!message.guildID) return false;
|
const member = message.guildID ? message.member :
|
||||||
// Server owner or elevated users
|
client.guilds.get(config.guildID).members.get(message.author.id);
|
||||||
if (message.channel.guild.ownerID == message.author.id ||
|
if (!member) return false;
|
||||||
Util.CommandPermissions.elevated(client, message)) return true;
|
if (Util.CommandPermissions.elevated(client, message)) return true;
|
||||||
return message.member.roles.includes(config.curatorRoleID);
|
return member.roles.includes(config.curatorRoleID);
|
||||||
},
|
},
|
||||||
admin: (client, message) => {
|
admin: (client, message) => {
|
||||||
if (!message.guildID) return false;
|
const member = message.guildID ? message.member :
|
||||||
// Server owner or elevated users
|
client.guilds.get(config.guildID).members.get(message.author.id);
|
||||||
if (message.channel.guild.ownerID == message.author.id ||
|
if (!member) return false;
|
||||||
Util.CommandPermissions.elevated(client, message)) return true;
|
if (Util.CommandPermissions.elevated(client, message)) return true;
|
||||||
return message.member.roles.includes(config.adminRoleID);
|
return member.roles.includes(config.adminRoleID);
|
||||||
},
|
},
|
||||||
curatorOrAdmin: (client, message) => {
|
curatorOrAdmin: (client, message) => {
|
||||||
if (!message.guildID) return false;
|
const member = message.guildID ? message.member :
|
||||||
// Server owner or elevated users
|
client.guilds.get(config.guildID).members.get(message.author.id);
|
||||||
if (message.channel.guild.ownerID == message.author.id ||
|
if (!member) return false;
|
||||||
Util.CommandPermissions.elevated(client, message)) return true;
|
if (Util.CommandPermissions.elevated(client, message)) return true;
|
||||||
return message.member.roles.includes(config.curatorRoleID) ||
|
return member.roles.includes(config.curatorRoleID) ||
|
||||||
message.member.roles.includes(config.adminRoleID);
|
member.roles.includes(config.adminRoleID);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue