mirror of
https://github.com/veganhacktivists/arabot.git
synced 2025-05-19 01:14:16 +02:00
refactor(arabot): change role command structures
This commit is contained in:
parent
6bfe57c135
commit
873afcd4d6
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class BookClubCommand extends Command {
|
||||
@ -50,67 +50,39 @@ export class BookClubCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || mod === null || guild === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const bookClub = guild.roles.cache.get(IDs.roles.bookClub);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || bookClub === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageBookClub(user, mod, guild);
|
||||
|
||||
// Checks if the user has Book Club and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.bookClub)) {
|
||||
// Remove the Book Club role from the user
|
||||
await guildMember.roles.remove(bookClub);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${bookClub.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Give Book Club role to the user
|
||||
await guildMember.roles.add(bookClub);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${bookClub.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
|
||||
await user.send(`You have been given the ${bookClub.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
@ -126,31 +98,45 @@ export class BookClubCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const info = await this.manageBookClub(user, mod, guild);
|
||||
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageBookClub(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const bookClub = guild.roles.cache.get(IDs.roles.bookClub);
|
||||
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (bookClub === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
info.message = 'Error fetching book club role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Book Club and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.bookClub)) {
|
||||
if (member.roles.cache.has(IDs.roles.bookClub)) {
|
||||
// Remove the Book Club role from the user
|
||||
await user.roles.remove(bookClub);
|
||||
await message.reply({
|
||||
content: `Removed the ${bookClub.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Book Club role to the user
|
||||
await user.roles.add(bookClub);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${bookClub.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${bookClub.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await member.roles.remove(bookClub);
|
||||
info.message = `Removed the ${bookClub.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Book Club role to the user
|
||||
await member.roles.add(bookClub);
|
||||
info.message = `Gave ${user} the ${bookClub.name} role!`;
|
||||
|
||||
await message.react('✅');
|
||||
await user.send(`You have been given the ${bookClub.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class DebateHostCommand extends Command {
|
||||
@ -50,67 +50,39 @@ export class DebateHostCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || mod === null || guild === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const debate = guild.roles.cache.get(IDs.roles.debateHost);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || debate === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageDebateHost(user, mod, guild);
|
||||
|
||||
// Checks if the user has Debate Host and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.debateHost)) {
|
||||
// Remove the Debate Host role from the user
|
||||
await guildMember.roles.remove(debate);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${debate.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Give Debate Host role to the user
|
||||
await guildMember.roles.add(debate);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${debate.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
|
||||
await user.send(`You have been given the ${debate.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
@ -126,31 +98,45 @@ export class DebateHostCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const debate = guild.roles.cache.get(IDs.roles.debateHost);
|
||||
const info = await this.manageDebateHost(user, mod, guild);
|
||||
|
||||
if (debate === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageDebateHost(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const debateHost = guild.roles.cache.get(IDs.roles.debateHost);
|
||||
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (debateHost === undefined) {
|
||||
info.message = 'Error fetching debate host role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Debate Host and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.debateHost)) {
|
||||
if (member.roles.cache.has(IDs.roles.debateHost)) {
|
||||
// Remove the Debate Host role from the user
|
||||
await user.roles.remove(debate);
|
||||
await message.reply({
|
||||
content: `Removed the ${debate.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Debate Host role to the user
|
||||
await user.roles.add(debate);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${debate.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${debate.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await member.roles.remove(debateHost);
|
||||
info.message = `Removed the ${debateHost.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Debate Host role to the user
|
||||
await member.roles.add(debateHost);
|
||||
info.message = `Gave ${user} the ${debateHost.name} role!`;
|
||||
|
||||
await message.react('✅');
|
||||
await user.send(`You have been given the ${debateHost.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class GameNightHostCommand extends Command {
|
||||
@ -50,67 +50,39 @@ export class GameNightHostCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || mod === null || guild === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const game = guild.roles.cache.get(IDs.roles.gameNightHost);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || game === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageGameNight(user, mod, guild);
|
||||
|
||||
// Checks if the user has Game Night and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.gameNightHost)) {
|
||||
// Remove the Game Night Host role from the user
|
||||
await guildMember.roles.remove(game);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${game.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Give Game Night Host role to the user
|
||||
await guildMember.roles.add(game);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${game.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
|
||||
await user.send(`You have been given the ${game.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
@ -126,31 +98,45 @@ export class GameNightHostCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const game = guild.roles.cache.get(IDs.roles.gameNightHost);
|
||||
const info = await this.manageGameNight(user, mod, guild);
|
||||
|
||||
if (game === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageGameNight(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const gameNightHost = guild.roles.cache.get(IDs.roles.gameNightHost);
|
||||
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (gameNightHost === undefined) {
|
||||
info.message = 'Error fetching game night host role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Game Night and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.gameNightHost)) {
|
||||
if (member.roles.cache.has(IDs.roles.gameNightHost)) {
|
||||
// Remove the Game Night Host role from the user
|
||||
await user.roles.remove(game);
|
||||
await message.reply({
|
||||
content: `Removed the ${game.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Game Night Host role to the user
|
||||
await user.roles.add(game);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${game.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${game.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await member.roles.remove(gameNightHost);
|
||||
info.message = `Removed the ${gameNightHost.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Game Night Host role to the user
|
||||
await member.roles.add(gameNightHost);
|
||||
info.message = `Gave ${user} the ${gameNightHost.name} role!`;
|
||||
|
||||
await message.react('✅');
|
||||
await user.send(`You have been given the ${gameNightHost.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class GuestCommand extends Command {
|
||||
@ -50,67 +50,39 @@ export class GuestCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || mod === null || guild === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const guest = guild.roles.cache.get(IDs.roles.guest);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || guest === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageGuest(user, mod, guild);
|
||||
|
||||
// Checks if the user has Guest and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.guest)) {
|
||||
// Remove the Guest role from the user
|
||||
await guildMember.roles.remove(guest);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${guest.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Give Guest role to the user
|
||||
await guildMember.roles.add(guest);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${guest.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
|
||||
await user.send(`You have been given the ${guest.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
@ -126,31 +98,45 @@ export class GuestCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const info = await this.manageGuest(user, mod, guild);
|
||||
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageGuest(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const guest = guild.roles.cache.get(IDs.roles.guest);
|
||||
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (guest === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
info.message = 'Error fetching guest role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Guest and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.guest)) {
|
||||
if (member.roles.cache.has(IDs.roles.guest)) {
|
||||
// Remove the Guest role from the user
|
||||
await user.roles.remove(guest);
|
||||
await message.reply({
|
||||
content: `Removed the ${guest.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Guest role to the user
|
||||
await user.roles.add(guest);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${guest.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${guest.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await member.roles.remove(guest);
|
||||
info.message = `Removed the ${guest.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Guest role to the user
|
||||
await member.roles.add(guest);
|
||||
info.message = `Gave ${user} the ${guest.name} role!`;
|
||||
|
||||
await message.react('✅');
|
||||
await user.send(`You have been given the ${guest.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class MentorCommand extends Command {
|
||||
@ -51,66 +51,39 @@ export class MentorCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || guild === null || mod === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const mentor = guild.roles.cache.get(IDs.roles.staff.mentor);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || mentor === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageMentor(user, mod, guild);
|
||||
|
||||
// Checks if the user has Mentor and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.staff.mentor)) {
|
||||
// Remove the Mentor role from the user
|
||||
await guildMember.roles.remove(mentor);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${mentor.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Add Mentor role to the user
|
||||
await guildMember.roles.add(mentor);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${mentor.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
await user.send(`You have been given the ${mentor.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
@ -126,31 +99,45 @@ export class MentorCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const info = await this.manageMentor(user, mod, guild);
|
||||
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageMentor(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const mentor = guild.roles.cache.get(IDs.roles.staff.mentor);
|
||||
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (mentor === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
info.message = 'Error fetching mentor role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Mentor and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.staff.mentor)) {
|
||||
if (member.roles.cache.has(IDs.roles.staff.mentor)) {
|
||||
// Remove the Mentor role from the user
|
||||
await user.roles.remove(mentor);
|
||||
await message.reply({
|
||||
content: `Removed the ${mentor.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Mentor role to the user
|
||||
await user.roles.add(mentor);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${mentor.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${mentor.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await member.roles.remove(mentor);
|
||||
info.message = `Removed the ${mentor.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Mentor role to the user
|
||||
await member.roles.add(mentor);
|
||||
info.message = `Gave ${user} the ${mentor.name} role!`;
|
||||
|
||||
await message.react('✅');
|
||||
await user.send(`You have been given the ${mentor.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class ModCommand extends Command {
|
||||
@ -50,70 +50,43 @@ export class ModCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || guild === null || mod === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const modRole = guild.roles.cache.get(IDs.roles.staff.moderator);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || modRole === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageMod(user, mod, guild);
|
||||
|
||||
// Checks if the user has Mod and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.staff.moderator)) {
|
||||
// Remove the Mod role from the user
|
||||
await guildMember.roles.remove(modRole);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${modRole.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Add Mod role to the user
|
||||
await guildMember.roles.add(modRole);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${modRole.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
await user.send(`You have been given the ${modRole.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
await message.reply('Moderator coordinator not found! Try again or contact a developer!');
|
||||
await message.reply('Mod coordinator not found! Try again or contact a developer!');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -125,31 +98,45 @@ export class ModCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const modRole = guild.roles.cache.get(IDs.roles.staff.moderator);
|
||||
const info = await this.manageMod(user, mod, guild);
|
||||
|
||||
if (modRole === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageMod(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const moderator = guild.roles.cache.get(IDs.roles.staff.moderator);
|
||||
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (moderator === undefined) {
|
||||
info.message = 'Error fetching the moderator role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Mod and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.staff.moderator)) {
|
||||
if (member.roles.cache.has(IDs.roles.staff.moderator)) {
|
||||
// Remove the Mod role from the user
|
||||
await user.roles.remove(modRole);
|
||||
await message.reply({
|
||||
content: `Removed the ${modRole.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Mod role to the user
|
||||
await user.roles.add(modRole);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${modRole.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${modRole.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await member.roles.remove(moderator);
|
||||
info.message = `Removed the ${moderator.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Mod role to the user
|
||||
await member.roles.add(moderator);
|
||||
info.message = `Gave ${user} the ${moderator.name} role!`;
|
||||
|
||||
await message.react('✅');
|
||||
await user.send(`You have been given the ${moderator.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class RestrictedAccessCommand extends Command {
|
||||
@ -51,70 +51,43 @@ export class RestrictedAccessCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || guild === null || mod === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const restrictedAccess = guild.roles.cache.get(IDs.roles.staff.restricted);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || restrictedAccess === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageRestrictedAccess(user, mod, guild);
|
||||
|
||||
// Checks if the user has RA and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.staff.restricted)) {
|
||||
// Remove the Restricted Access role from the user
|
||||
await guildMember.roles.remove(restrictedAccess);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${restrictedAccess.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Add Restricted Access role to the user
|
||||
await guildMember.roles.add(restrictedAccess);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${restrictedAccess.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
await user.send(`You have been given the ${restrictedAccess.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
await message.reply('Moderator coordinator not found! Try again or contact a developer!');
|
||||
await message.reply('Mod coordinator not found! Try again or contact a developer!');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -126,31 +99,45 @@ export class RestrictedAccessCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const restrictedAccess = guild.roles.cache.get(IDs.roles.staff.restricted);
|
||||
const info = await this.manageRestrictedAccess(user, mod, guild);
|
||||
|
||||
if (restrictedAccess === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageRestrictedAccess(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const restricted = guild.roles.cache.get(IDs.roles.staff.restricted);
|
||||
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (restricted === undefined) {
|
||||
info.message = 'Error fetching the restricted access role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has RA and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.staff.restricted)) {
|
||||
if (member.roles.cache.has(IDs.roles.staff.restricted)) {
|
||||
// Remove the Restricted Access role from the user
|
||||
await user.roles.remove(restrictedAccess);
|
||||
await message.reply({
|
||||
content: `Removed the ${restrictedAccess.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Restricted Access role to the user
|
||||
await user.roles.add(restrictedAccess);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${restrictedAccess.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${restrictedAccess.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await member.roles.remove(restricted);
|
||||
info.message = `Removed the ${restricted.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Restricted Access role to the user
|
||||
await member.roles.add(restricted);
|
||||
info.message = `Gave ${user} the ${restricted.name} role!`;
|
||||
|
||||
await message.react('✅');
|
||||
await user.send(`You have been given the ${restricted.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class StageHostCommand extends Command {
|
||||
@ -50,67 +50,39 @@ export class StageHostCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || mod === null || guild === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const stageHost = guild.roles.cache.get(IDs.roles.stageHost);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || stageHost === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageStageHost(user, mod, guild);
|
||||
|
||||
// Checks if the user has Stage Host and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.stageHost)) {
|
||||
// Remove the Veg Curious role from the user
|
||||
await guildMember.roles.remove(stageHost);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${stageHost.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Give Stage Host role to the user
|
||||
await guildMember.roles.add(stageHost);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${stageHost.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
|
||||
await user.send(`You have been given the ${stageHost.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
@ -126,31 +98,45 @@ export class StageHostCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const info = await this.manageStageHost(user, mod, guild);
|
||||
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageStageHost(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const stageHost = guild.roles.cache.get(IDs.roles.stageHost);
|
||||
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (stageHost === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
info.message = 'Error fetching stage host role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Stage Host and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.stageHost)) {
|
||||
if (member.roles.cache.has(IDs.roles.stageHost)) {
|
||||
// Remove the Stage Host role from the user
|
||||
await user.roles.remove(stageHost);
|
||||
await message.reply({
|
||||
content: `Removed the ${stageHost.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Stage Host role to the user
|
||||
await user.roles.add(stageHost);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${stageHost.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${stageHost.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await member.roles.remove(stageHost);
|
||||
info.message = `Removed the ${stageHost.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Stage Host role to the user
|
||||
await member.roles.add(stageHost);
|
||||
info.message = `Gave ${user} the ${stageHost.name} role!`;
|
||||
|
||||
await message.react('✅');
|
||||
await user.send(`You have been given the ${stageHost.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class TrialVerifierCommand extends Command {
|
||||
@ -50,66 +50,39 @@ export class TrialVerifierCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || guild === null || mod === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const verifier = guild.roles.cache.get(IDs.roles.staff.trialVerifier);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || verifier === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageTrialVerifier(user, mod, guild);
|
||||
|
||||
// Checks if the user has TV and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.staff.trialVerifier)) {
|
||||
// Remove the Trial Verifier role from the user
|
||||
await guildMember.roles.remove(verifier);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${verifier.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Add Trial Verifier role to the user
|
||||
await guildMember.roles.add(verifier);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${verifier.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
await user.send(`You have been given the ${verifier.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
@ -125,31 +98,45 @@ export class TrialVerifierCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const verifier = guild.roles.cache.get(IDs.roles.staff.trialVerifier);
|
||||
const info = await this.manageTrialVerifier(user, mod, guild);
|
||||
|
||||
if (verifier === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageTrialVerifier(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const trialVerifier = guild.roles.cache.get(IDs.roles.staff.trialVerifier);
|
||||
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (trialVerifier === undefined) {
|
||||
info.message = 'Error fetching the trial verifier role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has TV and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.staff.trialVerifier)) {
|
||||
if (member.roles.cache.has(IDs.roles.staff.trialVerifier)) {
|
||||
// Remove the Trial Verifier role from the user
|
||||
await user.roles.remove(verifier);
|
||||
await message.reply({
|
||||
content: `Removed the ${verifier.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Trial Verifier role to the user
|
||||
await user.roles.add(verifier);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${verifier.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${verifier.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await member.roles.remove(trialVerifier);
|
||||
info.message = `Removed the ${trialVerifier.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Trial Verifier role to the user
|
||||
await member.roles.add(trialVerifier);
|
||||
info.message = `Gave ${user} the ${trialVerifier.name} role!`;
|
||||
|
||||
await message.react('✅');
|
||||
await user.send(`You have been given the ${trialVerifier.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class VerifierCommand extends Command {
|
||||
@ -50,70 +50,39 @@ export class VerifierCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || guild === null || mod === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const verifier = guild.roles.cache.get(IDs.roles.staff.verifier);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || verifier === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageVerifier(user, mod, guild);
|
||||
|
||||
// Checks if the user has Verifier and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.staff.verifier)) {
|
||||
// Remove the Verifier role from the user
|
||||
await guildMember.roles.remove(verifier);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${verifier.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Add Verifier role to the user
|
||||
await guildMember.roles.add(verifier);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${verifier.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
await user.send(`You have been given the ${verifier.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
|
||||
if (guildMember.roles.cache.has(IDs.roles.staff.trialVerifier)) {
|
||||
await guildMember.roles.remove(IDs.roles.staff.trialVerifier);
|
||||
}
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
@ -129,35 +98,45 @@ export class VerifierCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const info = await this.manageVerifier(user, mod, guild);
|
||||
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageVerifier(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const verifier = guild.roles.cache.get(IDs.roles.staff.verifier);
|
||||
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (verifier === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
info.message = 'Error fetching verifier role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Verifier and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.staff.verifier)) {
|
||||
if (member.roles.cache.has(IDs.roles.staff.verifier)) {
|
||||
// Remove the Verifier role from the user
|
||||
await user.roles.remove(verifier);
|
||||
await message.reply({
|
||||
content: `Removed the ${verifier.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Verifier role to the user
|
||||
await user.roles.add(verifier);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${verifier.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${verifier.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
|
||||
if (user.roles.cache.has(IDs.roles.staff.trialVerifier)) {
|
||||
await user.roles.remove(IDs.roles.staff.trialVerifier);
|
||||
}
|
||||
await member.roles.remove(verifier);
|
||||
info.message = `Removed the ${verifier.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Verifier role to the user
|
||||
await member.roles.add(verifier);
|
||||
info.message = `Gave ${user} the ${verifier.name} role!`;
|
||||
|
||||
await message.react('✅');
|
||||
await user.send(`You have been given the ${verifier.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class ActivistCommand extends Command {
|
||||
@ -51,98 +51,43 @@ export class ActivistCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || mod === null || guild === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const modMember = guild.members.cache.get(mod.user.id);
|
||||
const activist = guild.roles.cache.get(IDs.roles.vegan.activist);
|
||||
const verCoordinator = guild.roles.cache.get(IDs.roles.staff.verifierCoordinator);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined
|
||||
|| modMember === undefined
|
||||
|| activist === undefined
|
||||
|| verCoordinator === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageActivist(user, mod, guild);
|
||||
|
||||
// Checks if the user is an activist
|
||||
if (guildMember.roles.cache.has(IDs.roles.vegan.activist)
|
||||
&& !(modMember.roles.cache.has(IDs.roles.staff.verifierCoordinator)
|
||||
|| modMember.roles.cache.has(IDs.roles.staff.modCoordinator))) {
|
||||
await interaction.reply({
|
||||
content: `${user} is an activist, only ${verCoordinator.name} can run this!`,
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Checks if the user has Activist and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.vegan.activist)) {
|
||||
// Remove the Activist role from the user
|
||||
await guildMember.roles.remove(activist);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${activist.name} role from ${user}`,
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Add Activist role to the user
|
||||
await guildMember.roles.add(activist);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${activist.name} role!`,
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
|
||||
const activistMsg = `${user} you have been given the ${activist.name} role by ${mod}! `
|
||||
+ `This means that if you'd wish to engage with non-vegans in <#${IDs.channels.nonVegan.general}>, you should follow these rules:\n\n`
|
||||
+ '1. Try to move conversations with non-vegans towards veganism/animal ethics\n'
|
||||
+ '2. Don\'t discuss social topics while activism is happening\n'
|
||||
+ '3. Have evidence for claims you make. "I don\'t know" is an acceptable answer. Chances are someone here knows or you can take time to find out\n'
|
||||
+ '4. Don\'t advocate for baby steps towards veganism. Participation in exploitation can stop today\n'
|
||||
+ '5. Differences in opinion between activists should be resolved in vegan spaces, not in the chat with non-vegans';
|
||||
await guildMember.send(activistMsg)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
await message.reply('Verifier not found! Try again or contact a developer!');
|
||||
await message.reply('Staff not found! Try again or contact a developer!');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -154,48 +99,67 @@ export class ActivistCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const info = await this.manageActivist(user, mod, guild);
|
||||
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageActivist(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const modMember = guild.members.cache.get(mod.id);
|
||||
const activist = guild.roles.cache.get(IDs.roles.vegan.activist);
|
||||
const verCoordinator = guild.roles.cache.get(IDs.roles.staff.verifierCoordinator);
|
||||
|
||||
if (activist === undefined
|
||||
|| verCoordinator === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user is an activist
|
||||
if (user.roles.cache.has(IDs.roles.vegan.activist)
|
||||
&& !(mod.roles.cache.has(IDs.roles.staff.verifierCoordinator)
|
||||
|| mod.roles.cache.has(IDs.roles.staff.modCoordinator))) {
|
||||
await message.reply({
|
||||
content: `${user} is an activist, only ${verCoordinator.name} can run this!`,
|
||||
});
|
||||
await message.react('❌');
|
||||
return;
|
||||
if (modMember === undefined) {
|
||||
info.message = 'Error fetching the staff\'s guild member!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Activist and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.vegan.activist)) {
|
||||
if (activist === undefined) {
|
||||
info.message = 'Error fetching activist role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user is Activist and to give them or remove them based on if they have it
|
||||
if (member.roles.cache.has(IDs.roles.vegan.activist)) {
|
||||
if (!modMember.roles.cache.hasAny(
|
||||
IDs.roles.staff.verifierCoordinator,
|
||||
IDs.roles.staff.modCoordinator,
|
||||
)) {
|
||||
info.message = 'You need to be a verifier coordinator to remove this role!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Remove the Activist role from the user
|
||||
await user.roles.remove(activist);
|
||||
await message.react('✅');
|
||||
return;
|
||||
await member.roles.remove(activist);
|
||||
info.message = `Removed the ${activist.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
|
||||
// Add Activist role to the user
|
||||
await user.roles.add(activist);
|
||||
await message.react('✅');
|
||||
await member.roles.add(activist);
|
||||
info.message = `Gave ${user} the ${activist.name} role!`;
|
||||
|
||||
const activistMsg = `${user} you have been given the ${activist.name} role by ${mod}! `
|
||||
await user.send(
|
||||
`${user} you have been given the ${activist.name} role by ${mod}! `
|
||||
+ `This means that if you'd wish to engage with non-vegans in <#${IDs.channels.nonVegan.general}>, you should follow these rules:\n\n`
|
||||
+ '1. Try to move conversations with non-vegans towards veganism/animal ethics\n'
|
||||
+ '2. Don\'t discuss social topics while activism is happening\n'
|
||||
+ '3. Have evidence for claims you make. "I don\'t know" is an acceptable answer. Chances are someone here knows or you can take time to find out\n'
|
||||
+ '4. Don\'t advocate for baby steps towards veganism. Participation in exploitation can stop today\n'
|
||||
+ '5. Differences in opinion between activists should be resolved in vegan spaces, not in the chat with non-vegans';
|
||||
await user.send(activistMsg)
|
||||
.catch(() => {});
|
||||
+ '5. Differences in opinion between activists should be resolved in vegan spaces, not in the chat with non-vegans',
|
||||
).catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class ConvincedCommand extends Command {
|
||||
@ -51,82 +51,43 @@ export class ConvincedCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || guild === null || mod === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const convinced = guild.roles.cache.get(IDs.roles.nonvegan.convinced);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || convinced === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageConvinced(user, mod, guild);
|
||||
|
||||
// Checks if the user is vegan
|
||||
if (guildMember.roles.cache.has(IDs.roles.vegan.vegan)) {
|
||||
await interaction.reply({
|
||||
content: `${user} is already vegan!`,
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
}
|
||||
|
||||
// Checks if the user has Convinced and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.nonvegan.convinced)) {
|
||||
// Remove the Veg Curious role from the user
|
||||
await guildMember.roles.remove(convinced);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${convinced.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Add Convinced role to the user
|
||||
await guildMember.roles.add(convinced);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${convinced.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
await user.send(`You have been given the ${convinced.name} role by ${mod}!`
|
||||
+ '\n\nThis role allows you to get access to the Diet Support section in this server that can help you go vegan '
|
||||
+ 'and other parts of the server! :)'
|
||||
+ '\n\nThank you for caring about the animals 💚')
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
await message.reply('Moderator not found! Try again or contact a developer!');
|
||||
await message.reply('Mod not found! Try again or contact a developer!');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -138,48 +99,54 @@ export class ConvincedCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const info = await this.manageConvinced(user, mod, guild);
|
||||
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageConvinced(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const convinced = guild.roles.cache.get(IDs.roles.nonvegan.convinced);
|
||||
|
||||
if (convinced === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user is vegan
|
||||
if (user.roles.cache.has(IDs.roles.vegan.vegan)) {
|
||||
await message.reply({
|
||||
content: `${user} is already vegan!`,
|
||||
});
|
||||
await message.react('❌');
|
||||
return;
|
||||
if (convinced === undefined) {
|
||||
info.message = 'Error fetching coordinator role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (member.roles.cache.has(IDs.roles.vegan.vegan)) {
|
||||
info.message = `${user} is already vegan, cannot give the ${convinced.name} role!`;
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Convinced and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.nonvegan.convinced)) {
|
||||
// Remove the Veg Curious role from the user
|
||||
await user.roles.remove(convinced);
|
||||
await message.reply({
|
||||
content: `Removed the ${convinced.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Convinced role to the user
|
||||
await user.roles.add(convinced);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${convinced.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${convinced.name} role by ${mod}!`
|
||||
+ '\n\nThis role allows you to get access to the Diet Support section in this server that can help you go vegan '
|
||||
+ 'and other parts of the server! :)'
|
||||
+ '\n\nThank you for caring about the animals 💚')
|
||||
.catch(() => message.reply('User\'s DMs are closed.'));
|
||||
if (member.roles.cache.has(IDs.roles.nonvegan.convinced)) {
|
||||
// Remove the Convinced role from the user
|
||||
await member.roles.remove(convinced);
|
||||
info.message = `Removed the ${convinced.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Convinced role to the user
|
||||
await member.roles.add(convinced);
|
||||
info.message = `Gave ${user} the ${convinced.name} role!`;
|
||||
|
||||
// Checks if the user is xlevra to send a very kind message
|
||||
if (mod.id === '259624904746467329') {
|
||||
await message.reply('Moist!');
|
||||
}
|
||||
await user.send(`You have been given the ${convinced.name} role by ${mod}!`
|
||||
+ '\n\nThis role allows you to get access to the Diet Support section in this server that can help you go vegan '
|
||||
+ 'and other parts of the server! :)'
|
||||
+ '\n\nThank you for caring about the animals 💚')
|
||||
.catch(() => {});
|
||||
|
||||
await message.react('✅');
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class PlusCommand extends Command {
|
||||
@ -51,80 +51,43 @@ export class PlusCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || guild === null || mod === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const plus = guild.roles.cache.get(IDs.roles.vegan.plus);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || plus === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.managePlus(user, mod, guild);
|
||||
|
||||
// Checks if the user is not vegan
|
||||
if (!guildMember.roles.cache.has(IDs.roles.vegan.vegan)) {
|
||||
await interaction.reply({
|
||||
content: `${user} is not vegan!`,
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Checks if the user has Plus and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.vegan.plus)) {
|
||||
// Remove the Plus role from the user
|
||||
await guildMember.roles.remove(plus);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${plus.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Add Plus role to the user
|
||||
await guildMember.roles.add(plus);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${plus.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
await user.send(`You have been given the ${plus.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
await message.reply('Moderator not found! Try again or contact a developer!');
|
||||
await message.reply('Coordinator not found! Try again or contact a developer!');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -136,37 +99,45 @@ export class PlusCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const info = await this.managePlus(user, mod, guild);
|
||||
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async managePlus(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const plus = guild.roles.cache.get(IDs.roles.vegan.plus);
|
||||
|
||||
if (plus === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (!user.roles.cache.has(IDs.roles.vegan.vegan)) {
|
||||
await message.react('❌');
|
||||
await message.reply(`${user} is not vegan!`);
|
||||
return;
|
||||
if (plus === undefined) {
|
||||
info.message = 'Error fetching plus role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Plus and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.vegan.plus)) {
|
||||
if (member.roles.cache.has(IDs.roles.vegan.plus)) {
|
||||
// Remove the Plus role from the user
|
||||
await user.roles.remove(plus);
|
||||
await message.reply({
|
||||
content: `Removed the ${plus.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Plus role to the user
|
||||
await user.roles.add(plus);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${plus.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${plus.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
await member.roles.remove(plus);
|
||||
info.message = `Removed the ${plus.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Plus role to the user
|
||||
await member.roles.add(plus);
|
||||
info.message = `Gave ${user} the ${plus.name} role!`;
|
||||
|
||||
await message.react('✅');
|
||||
await user.send(`You have been given the ${plus.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class TrustedCommand extends Command {
|
||||
@ -51,73 +51,43 @@ export class TrustedCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || guild === null || mod === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const trusted = guild.roles.cache.get(IDs.roles.trusted);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined || trusted === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageTrusted(user, mod, guild);
|
||||
|
||||
// Checks if the user has Trusted and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.trusted)) {
|
||||
// Remove the Trusted role from the user
|
||||
await guildMember.roles.remove(trusted);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${trusted.name} role from ${user}`,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
// Add Trusted role to the user
|
||||
await guildMember.roles.add(trusted);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${trusted.name} role!`,
|
||||
fetchReply: true,
|
||||
});
|
||||
await user.send(`You have been given the ${trusted.name} role by ${mod}!`
|
||||
+ '\n\nThis role allows you to post attachments to the server and stream in VCs.'
|
||||
+ '\nMake sure that you follow the rules, don\'t post anything NSFW, anything objectifying animals and follow Discord\'s ToS.'
|
||||
+ `\nNot following these rules can result in the removal of the ${trusted.name} role.`)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
await message.reply('Moderator not found! Try again or contact a developer!');
|
||||
await message.reply('Mod not found! Try again or contact a developer!');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -129,34 +99,48 @@ export class TrustedCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const info = await this.manageTrusted(user, mod, guild);
|
||||
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageTrusted(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const trusted = guild.roles.cache.get(IDs.roles.trusted);
|
||||
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
if (trusted === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
info.message = 'Error fetching trusted role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Trusted and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.trusted)) {
|
||||
// Remove the Veg Curious role from the user
|
||||
await user.roles.remove(trusted);
|
||||
await message.reply({
|
||||
content: `Removed the ${trusted.name} role from ${user}`,
|
||||
});
|
||||
} else {
|
||||
// Give Trusted role to the user
|
||||
await user.roles.add(trusted);
|
||||
await message.reply({
|
||||
content: `Gave ${user} the ${trusted.name} role!`,
|
||||
});
|
||||
await user.send(`You have been given the ${trusted.name} role by ${mod}!`
|
||||
+ '\n\nThis role allows you to post attachments to the server and stream in VCs.'
|
||||
+ '\nMake sure that you follow the rules, and don\'t post anything NSFW, anything objectifying animals and follow Discord\'s ToS.'
|
||||
+ `\nNot following these rules can result in the removal of the ${trusted.name} role.`)
|
||||
.catch(() => {});
|
||||
if (member.roles.cache.has(IDs.roles.trusted)) {
|
||||
// Remove the Trusted role from the user
|
||||
await member.roles.remove(trusted);
|
||||
info.message = `Removed the ${trusted.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
// Add Trusted role to the user
|
||||
await member.roles.add(trusted);
|
||||
info.message = `Gave ${user} the ${trusted.name} role!`;
|
||||
|
||||
await message.react('✅');
|
||||
await user.send(`You have been given the ${trusted.name} role by ${mod}!`
|
||||
+ '\n\nThis role allows you to post attachments to the server and stream in VCs.'
|
||||
+ '\nMake sure that you follow the rules, and don\'t post anything NSFW, anything objectifying animals and follow Discord\'s ToS.'
|
||||
+ `\nNot following these rules can result in the removal of the ${trusted.name} role.`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class VeganCommand extends Command {
|
||||
@ -51,104 +51,43 @@ export class VeganCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mod = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || mod === null || guild === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const modMember = guild.members.cache.get(mod.user.id);
|
||||
const vegan = guild.roles.cache.get(IDs.roles.vegan.vegan);
|
||||
const verCoordinator = guild.roles.cache.get(IDs.roles.staff.verifierCoordinator);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined
|
||||
|| modMember === undefined
|
||||
|| vegan === undefined
|
||||
|| verCoordinator === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageVegan(user, mod, guild);
|
||||
|
||||
// Checks if the user is vegan
|
||||
if (guildMember.roles.cache.has(IDs.roles.vegan.vegan)
|
||||
&& !(modMember.roles.cache.has(IDs.roles.staff.verifierCoordinator)
|
||||
|| modMember.roles.cache.has(IDs.roles.staff.modCoordinator))) {
|
||||
await interaction.reply({
|
||||
content: `${user} is vegan, only ${verCoordinator.name} can run this!`,
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Checks if the user has Vegan and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.vegan.vegan)) {
|
||||
// Remove the Vegan role from the user
|
||||
await guildMember.roles.add(IDs.roles.nonvegan.nonvegan);
|
||||
await guildMember.roles.remove([
|
||||
vegan,
|
||||
IDs.roles.vegan.activist,
|
||||
IDs.roles.vegan.nvAccess,
|
||||
]);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${vegan.name} role from ${user}`,
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Add Vegan role to the user
|
||||
await guildMember.roles.add([
|
||||
vegan,
|
||||
IDs.roles.vegan.nvAccess,
|
||||
]);
|
||||
await guildMember.roles.remove([
|
||||
IDs.roles.nonvegan.nonvegan,
|
||||
IDs.roles.nonvegan.convinced,
|
||||
IDs.roles.nonvegan.vegCurious,
|
||||
]);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${vegan.name} role!`,
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
|
||||
await guildMember.send(`You have been given the ${vegan.name} role by ${mod.user}!`)
|
||||
.catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mod = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
await message.reply('Verifier not found! Try again or contact a developer!');
|
||||
await message.reply('Staff not found! Try again or contact a developer!');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -160,50 +99,69 @@ export class VeganCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const info = await this.manageVegan(user, mod, guild);
|
||||
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageVegan(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const modMember = guild.members.cache.get(mod.id);
|
||||
const vegan = guild.roles.cache.get(IDs.roles.vegan.vegan);
|
||||
const verCoordinator = guild.roles.cache.get(IDs.roles.staff.verifierCoordinator);
|
||||
|
||||
if (vegan === undefined
|
||||
|| verCoordinator === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user is vegan
|
||||
if (user.roles.cache.has(IDs.roles.vegan.vegan)
|
||||
|| !(mod.roles.cache.has(IDs.roles.staff.verifierCoordinator)
|
||||
|| mod.roles.cache.has(IDs.roles.staff.modCoordinator))) {
|
||||
await message.reply({
|
||||
content: `${user} is vegan, only ${verCoordinator.name} can run this!`,
|
||||
});
|
||||
await message.react('❌');
|
||||
return;
|
||||
if (modMember === undefined) {
|
||||
info.message = 'Error fetching the staff\'s guild member!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Vegan and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.vegan.vegan)) {
|
||||
// Remove the Veg Curious role from the user
|
||||
await user.roles.add(IDs.roles.nonvegan.nonvegan);
|
||||
await user.roles.remove([
|
||||
if (vegan === undefined) {
|
||||
info.message = 'Error fetching vegan role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user is Vegan and to give them or remove them based on if they have it
|
||||
if (member.roles.cache.has(IDs.roles.vegan.vegan)) {
|
||||
if (!modMember.roles.cache.hasAny(
|
||||
IDs.roles.staff.verifierCoordinator,
|
||||
IDs.roles.staff.modCoordinator,
|
||||
)) {
|
||||
info.message = 'You need to be a verifier coordinator to remove these roles!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Remove the Vegan role from the user
|
||||
await member.roles.add(IDs.roles.nonvegan.nonvegan);
|
||||
await member.roles.remove([
|
||||
vegan,
|
||||
IDs.roles.vegan.activist,
|
||||
]);
|
||||
await message.react('✅');
|
||||
return;
|
||||
info.message = `Removed the ${vegan.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
|
||||
// Add Vegan role to the user
|
||||
await user.roles.add(vegan);
|
||||
await user.roles.remove([
|
||||
await member.roles.add(vegan);
|
||||
await member.roles.remove([
|
||||
IDs.roles.nonvegan.nonvegan,
|
||||
IDs.roles.nonvegan.convinced,
|
||||
IDs.roles.nonvegan.vegCurious,
|
||||
]);
|
||||
await message.react('✅');
|
||||
info.message = `Gave ${user} the ${vegan.name} role!`;
|
||||
|
||||
await user.send(`You have been given the ${vegan.name} role by ${mod.user}!`)
|
||||
await user.send(`You have been given the ${vegan.name} role by ${mod}!`)
|
||||
.catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import { Args, Command, RegisterBehavior } from '@sapphire/framework';
|
||||
import type { GuildMember, Message } from 'discord.js';
|
||||
import type { Guild, User, Message } from 'discord.js';
|
||||
import IDs from '#utils/ids';
|
||||
|
||||
export class VegCuriousCommand extends Command {
|
||||
@ -51,92 +51,43 @@ export class VegCuriousCommand extends Command {
|
||||
public async chatInputRun(interaction: Command.ChatInputCommandInteraction) {
|
||||
// TODO add database updates
|
||||
// Get the arguments
|
||||
const user = interaction.options.getUser('user');
|
||||
const mentor = interaction.member;
|
||||
const user = interaction.options.getUser('user', true);
|
||||
const mod = interaction.user;
|
||||
const { guild } = interaction;
|
||||
|
||||
// Checks if all the variables are of the right type
|
||||
if (user === null || mentor === null || guild === null) {
|
||||
if (guild === null) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
content: 'Error fetching guild!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Gets guildMember whilst removing the ability of each other variables being null
|
||||
const guildMember = guild.members.cache.get(user.id);
|
||||
const mentorMember = guild.members.cache.get(mentor.user.id);
|
||||
const vegCurious = guild.roles.cache.get(IDs.roles.nonvegan.vegCurious);
|
||||
const mentorCoordinator = guild.roles.cache.get(IDs.roles.staff.mentorCoordinator);
|
||||
const dietSupport = guild.channels.cache.get(IDs.channels.dietSupport.main);
|
||||
await interaction.deferReply({ ephemeral: true });
|
||||
|
||||
// Checks if guildMember is null
|
||||
if (guildMember === undefined
|
||||
|| mentorMember === undefined
|
||||
|| vegCurious === undefined
|
||||
|| mentorCoordinator === undefined
|
||||
|| dietSupport === undefined) {
|
||||
await interaction.reply({
|
||||
content: 'Error fetching user!',
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const info = await this.manageVegCurious(user, mod, guild);
|
||||
|
||||
// Checks if the user is vegan
|
||||
if (guildMember.roles.cache.has(IDs.roles.vegan.vegan)
|
||||
&& !mentorMember.roles.cache.has(IDs.roles.staff.mentorCoordinator)) {
|
||||
await interaction.reply({
|
||||
content: `${user} is vegan, only ${mentorCoordinator.name} can run this!`,
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Checks if the user has Veg Curious and to give them or remove them based on if they have it
|
||||
if (guildMember.roles.cache.has(IDs.roles.nonvegan.vegCurious)) {
|
||||
// Remove the Veg Curious role from the user
|
||||
await guildMember.roles.remove(vegCurious);
|
||||
await interaction.reply({
|
||||
content: `Removed the ${vegCurious.name} role from ${user}`,
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Add Veg Curious role to the user
|
||||
await guildMember.roles.add(vegCurious);
|
||||
await interaction.reply({
|
||||
content: `Gave ${user} the ${vegCurious.name} role!`,
|
||||
ephemeral: true,
|
||||
fetchReply: true,
|
||||
});
|
||||
|
||||
await guildMember.send(`You have been given the ${vegCurious.name} role by ${mentor.user} `
|
||||
+ `which gives you access to ${dietSupport}`).catch(() => {});
|
||||
await interaction.editReply(info.message);
|
||||
}
|
||||
|
||||
public async messageRun(message: Message, args: Args) {
|
||||
// Get arguments
|
||||
let user: GuildMember;
|
||||
let user: User;
|
||||
try {
|
||||
user = await args.pick('member');
|
||||
user = await args.pick('user');
|
||||
} catch {
|
||||
await message.react('❌');
|
||||
await message.reply('User was not provided!');
|
||||
return;
|
||||
}
|
||||
|
||||
const mentor = message.member;
|
||||
const mod = message.author;
|
||||
|
||||
if (mentor === null) {
|
||||
if (mod === null) {
|
||||
await message.react('❌');
|
||||
await message.reply('Mentor not found! Try again or contact a developer!');
|
||||
await message.reply('Staff not found! Try again or contact a developer!');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -148,41 +99,57 @@ export class VegCuriousCommand extends Command {
|
||||
return;
|
||||
}
|
||||
|
||||
const info = await this.manageVegCurious(user, mod, guild);
|
||||
|
||||
await message.reply(info.message);
|
||||
await message.react(info.success ? '✅' : '❌');
|
||||
}
|
||||
|
||||
private async manageVegCurious(user: User, mod: User, guild: Guild) {
|
||||
const info = {
|
||||
message: '',
|
||||
success: false,
|
||||
};
|
||||
const member = guild.members.cache.get(user.id);
|
||||
const modMember = guild.members.cache.get(mod.id);
|
||||
const vegCurious = guild.roles.cache.get(IDs.roles.nonvegan.vegCurious);
|
||||
const mentorCoordinator = guild.roles.cache.get(IDs.roles.staff.mentorCoordinator);
|
||||
const dietSupport = guild.channels.cache.get(IDs.channels.dietSupport.main);
|
||||
|
||||
if (vegCurious === undefined
|
||||
|| mentorCoordinator === undefined
|
||||
|| dietSupport === undefined) {
|
||||
await message.react('❌');
|
||||
await message.reply('Role not found! Try again or contact a developer!');
|
||||
return;
|
||||
// Checks if user's GuildMember was found in cache
|
||||
if (member === undefined) {
|
||||
info.message = 'Error fetching guild member for the user!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user is vegan
|
||||
if (user.roles.cache.has(IDs.roles.vegan.vegan)
|
||||
&& !mentor.roles.cache.has(IDs.roles.staff.mentorCoordinator)) {
|
||||
await message.reply({
|
||||
content: `${user} is vegan, only ${mentorCoordinator.name} can run this!`,
|
||||
});
|
||||
await message.react('❌');
|
||||
return;
|
||||
if (modMember === undefined) {
|
||||
info.message = 'Error fetching the staff\'s guild member!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user has Veg Curious and to give them or remove them based on if they have it
|
||||
if (user.roles.cache.has(IDs.roles.nonvegan.vegCurious)) {
|
||||
if (vegCurious === undefined) {
|
||||
info.message = 'Error fetching veg curious role from cache!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Checks if the user is Veg Curious and to give them or remove them based on if they have it
|
||||
if (member.roles.cache.has(IDs.roles.nonvegan.vegCurious)) {
|
||||
if (!modMember.roles.cache.has(IDs.roles.staff.mentorCoordinator)) {
|
||||
info.message = 'You need to be a mentor coordinator to remove this role!';
|
||||
return info;
|
||||
}
|
||||
|
||||
// Remove the Veg Curious role from the user
|
||||
await user.roles.remove(vegCurious);
|
||||
await message.react('✅');
|
||||
return;
|
||||
await member.roles.remove(vegCurious);
|
||||
info.message = `Removed the ${vegCurious.name} role from ${user}`;
|
||||
return info;
|
||||
}
|
||||
|
||||
// Add Veg Curious role to the user
|
||||
await user.roles.add(vegCurious);
|
||||
await message.react('✅');
|
||||
await member.roles.add(vegCurious);
|
||||
info.message = `Gave ${user} the ${vegCurious.name} role!`;
|
||||
|
||||
await user.send(`You have been given the ${vegCurious.name} role by ${mentor.user} `
|
||||
+ `which gives you access to ${dietSupport}`).catch(() => {});
|
||||
await user.send(`You have been given the ${vegCurious.name} role by ${mod} `
|
||||
+ 'which gives you access to the diet support section').catch(() => {});
|
||||
info.success = true;
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user