mirror of
https://github.com/citra-emu/discord-bot.git
synced 2025-10-14 07:27:25 +00:00
44 lines
2 KiB
TypeScript
44 lines
2 KiB
TypeScript
import state from './state';
|
|
import * as data from './data';
|
|
import logger from './logging';
|
|
import UserBan from './models/UserBan';
|
|
import * as discord from 'discord.js';
|
|
|
|
export async function ban (user: discord.User, moderator: discord.User, guild: discord.Guild | null) {
|
|
const count = state.warnings.filter(x => x.id === user.id && !x.cleared).length || 0;
|
|
|
|
logger.info(`${moderator.toString()} has banned ${user.toString()} ${user.id} ${user.username}.`);
|
|
await state.logChannel?.send(`${moderator.toString()} has banned ${user.id} ${user.toString()} [${count}].`);
|
|
|
|
state.bans.push(new UserBan(user.id, user.username, moderator.id, moderator.username, count));
|
|
guild?.members?.ban(user).catch(async function (error) {
|
|
await state.logChannel?.send(`Error banning ${user.toString()} ${user.username}`);
|
|
logger.error(`Error banning ${user.toString()} ${user.id} ${user.username}.`, error);
|
|
});
|
|
|
|
data.flushBans();
|
|
}
|
|
|
|
export async function grantRole (member: discord.GuildMember, role: string, channel: discord.TextBasedChannel) {
|
|
const user = member.user;
|
|
const roleDisplayName = member.guild.roles.cache.get(role)?.name;
|
|
|
|
const alreadyJoined = member.roles.cache.has(role);
|
|
if (alreadyJoined) {
|
|
member.roles.remove(role).then(async () => {
|
|
await channel.send(`${user.toString()}'s ${roleDisplayName} role has been revoked.`);
|
|
}).catch(async () => {
|
|
await state.logChannel?.send(`Error revoking ${user.toString()}'s ${roleDisplayName} permission...`);
|
|
logger.error(`Error revoking ${user.toString()} ${user.username}'s ${roleDisplayName} permission...`);
|
|
});
|
|
return;
|
|
}
|
|
|
|
member.roles.add(role).then(async () => {
|
|
await channel.send(`${user.toString()} has been granted ${roleDisplayName} role.`);
|
|
}).catch(async () => {
|
|
await state.logChannel?.send(`Error granting ${user.toString()}'s ${roleDisplayName} permission...`);
|
|
logger.error(`Error granting ${user.toString()} ${user.username}'s ${roleDisplayName} permission...`);
|
|
});
|
|
}
|