DiscordTickets/src/utils/discord.js

98 lines
2.1 KiB
JavaScript
Raw Normal View History

const {
Guild, // eslint-disable-line no-unused-vars
GuildMember // eslint-disable-line no-unused-vars
} = require('discord.js');
const config = require('../../user/config');
let current_presence = -1;
module.exports = class DiscordUtils {
constructor(client) {
this.client = client;
}
2021-04-05 20:38:00 +03:00
/**
* Generate embed footer text
2021-05-22 02:04:18 +03:00
* @param {string} text
* @param {string} [additional]
2021-04-05 20:38:00 +03:00
* @returns {string}
*/
footer(text, additional) {
2021-04-05 20:38:00 +03:00
if (text && additional) return `${text} | ${additional}`;
else return additional || text || '';
}
/**
* Check if a guild member is staff
* @param {GuildMember} member - the guild member
* @returns {boolean}
*/
async isStaff(member) {
const guild_categories = await this.client.db.models.Category.findAll({ where: { guild: member.guild.id } });
return guild_categories.some(cat => cat.roles.some(r => member.roles.cache.has(r)));
}
/**
* get a guild's settings
* @param {Guild} guild - The Guild
* @returns {Promise<Model>}
*/
async getSettings(guild) {
const data = { id: guild.id };
const [settings] = await this.client.db.models.Guild.findOrCreate({
defaults: data,
where: data
});
return settings;
}
/**
* Delete a guild's settings
* @param {Guild} guild - The Guild
* @returns {Promise<Number>}
*/
async deleteSettings(guild) {
const row = await this.getSettings(guild);
return await row.destroy();
}
/**
* Select a presence from the config
2021-04-05 20:38:00 +03:00
* @returns {PresenceData}
*/
static selectPresence() {
2021-05-18 20:12:07 +03:00
const length = config.presence.presences.length;
if (length === 0) return {};
2021-05-22 02:04:18 +03:00
let num;
2021-05-22 02:04:18 +03:00
if (length === 1) {
num = 0;
2021-05-22 02:04:18 +03:00
} else if (config.presence.randomise) {
num = Math.floor(Math.random() * length);
2021-05-22 02:04:18 +03:00
} else {
current_presence = current_presence + 1; // ++ doesn't work on negative numbers
2021-05-22 02:04:18 +03:00
if (current_presence === length) {
current_presence = 0;
2021-05-22 02:04:18 +03:00
}
num = current_presence;
}
2021-05-18 20:12:07 +03:00
const {
activity: name,
status,
type,
url
} = config.presence.presences[num];
return {
activities: [
{
name,
type,
url
}
],
status
};
2021-05-22 02:04:18 +03:00
}
};