🎨 changed from /groups to /modules for plugins.
This commit is contained in:
parent
7f0835813c
commit
39099ebaea
76 changed files with 300 additions and 465 deletions
|
@ -10,7 +10,7 @@ export default {
|
|||
async execute(guild: Guild) {
|
||||
const { client } = guild;
|
||||
|
||||
logger?.verbose(`Added to guild: ${guild.name} (${guild.id})`);
|
||||
logger?.silly(`Added to guild: ${guild.name} (${guild.id})`);
|
||||
|
||||
await fetchGuild(guild);
|
||||
await updatePresence(client);
|
||||
|
|
|
@ -10,7 +10,7 @@ export default {
|
|||
async execute(guild: Guild) {
|
||||
const { client } = guild;
|
||||
|
||||
logger?.verbose(`Deleted from guild: ${guild.name} (${guild.id})`);
|
||||
logger?.silly(`Deleted from guild: ${guild.name} (${guild.id})`);
|
||||
|
||||
await dropGuild(guild);
|
||||
await updatePresence(client);
|
||||
|
|
|
@ -12,7 +12,7 @@ export default {
|
|||
async execute(member: GuildMember) {
|
||||
const { client, user, guild } = member;
|
||||
|
||||
logger?.verbose(
|
||||
logger?.silly(
|
||||
`New member: ${user.tag} (${user.id}) added to guild: ${guild.name} (${guild.id})`
|
||||
);
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ export default {
|
|||
async execute(member: GuildMember) {
|
||||
const { client, user, guild } = member;
|
||||
|
||||
logger?.verbose(
|
||||
logger?.silly(
|
||||
`Removed member: ${user.tag} (${user.id}) from guild: ${guild.name} (${guild.id})`
|
||||
);
|
||||
|
||||
|
|
22
src/events/index.ts
Normal file
22
src/events/index.ts
Normal file
|
@ -0,0 +1,22 @@
|
|||
// 3rd party dependencies
|
||||
import mongoose from "mongoose";
|
||||
|
||||
// Dependencies
|
||||
import logger from "@logger";
|
||||
|
||||
// Configuration
|
||||
import { url } from "@config/database";
|
||||
|
||||
export default async () => {
|
||||
await mongoose.connect(url).then(async (connection) => {
|
||||
logger.info(`Connected to database: ${connection.connection.name}`);
|
||||
});
|
||||
|
||||
mongoose.connection.on("error", async (error) => {
|
||||
logger.error(`${error}`);
|
||||
});
|
||||
|
||||
mongoose.connection.on("warn", async (warning) => {
|
||||
logger.warn(warning);
|
||||
});
|
||||
};
|
|
@ -4,7 +4,6 @@ import { CommandInteraction, MessageEmbed } from "discord.js";
|
|||
import logger from "@logger";
|
||||
|
||||
import { errorColor, footerText, footerIcon } from "@config/embed";
|
||||
import i18next from "i18next";
|
||||
import deferReply from "@root/helpers/deferReply";
|
||||
import getCommandMetadata from "@root/helpers/getCommandMetadata";
|
||||
|
||||
|
@ -31,7 +30,7 @@ export default async (interaction: CommandInteraction) => {
|
|||
return interaction?.editReply({
|
||||
embeds: [
|
||||
new MessageEmbed()
|
||||
.setTitle("[:toolbox:] Manage")
|
||||
.setTitle("[:x:] Permission")
|
||||
.setDescription(`You do not have the permission to manage the bot.`)
|
||||
.setTimestamp(new Date())
|
||||
.setColor(errorColor)
|
||||
|
@ -42,17 +41,12 @@ export default async (interaction: CommandInteraction) => {
|
|||
|
||||
if (metadata.guildOnly) {
|
||||
if (!guild) {
|
||||
logger.verbose(`Guild is null`);
|
||||
logger.debug(`Guild is null`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
new MessageEmbed()
|
||||
.setDescription(
|
||||
i18next.t("guildOnly", {
|
||||
lng: interaction.locale,
|
||||
ns: "errors",
|
||||
})
|
||||
)
|
||||
.setDescription("This command is only available for guild")
|
||||
.setColor(errorColor)
|
||||
.setTimestamp(new Date())
|
||||
.setFooter({ text: footerText, iconURL: footerIcon }),
|
||||
|
@ -63,17 +57,12 @@ export default async (interaction: CommandInteraction) => {
|
|||
|
||||
if (metadata.dmOnly) {
|
||||
if (guild) {
|
||||
logger.verbose(`Guild exist`);
|
||||
logger.silly(`Guild exist`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
new MessageEmbed()
|
||||
.setDescription(
|
||||
i18next.t("dmOnly", {
|
||||
lng: interaction.locale,
|
||||
ns: "errors",
|
||||
})
|
||||
)
|
||||
.setDescription("This command is only available in DM.")
|
||||
.setColor(errorColor)
|
||||
.setTimestamp(new Date())
|
||||
.setFooter({ text: footerText, iconURL: footerIcon }),
|
||||
|
@ -85,7 +74,7 @@ export default async (interaction: CommandInteraction) => {
|
|||
await currentCommand
|
||||
.execute(interaction)
|
||||
.then(async () => {
|
||||
return logger?.verbose(
|
||||
return logger?.silly(
|
||||
`Command: ${commandName} executed in guild: ${guild?.name} (${guild?.id}) by user: ${user?.tag} (${user?.id})`
|
||||
);
|
||||
})
|
||||
|
|
|
@ -10,7 +10,7 @@ export default {
|
|||
async execute(interaction: CommandInteraction) {
|
||||
const { guild, id } = interaction;
|
||||
|
||||
logger?.verbose(
|
||||
logger?.silly(
|
||||
`New interaction: ${id} in guild: ${guild?.name} (${guild?.id})`
|
||||
);
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ export default {
|
|||
});
|
||||
|
||||
if (counter === null) {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`No counter found for guild ${guildId} and channel ${channelId}`
|
||||
);
|
||||
return;
|
||||
|
@ -33,7 +33,7 @@ export default {
|
|||
lastMessage?.author.id === author.id &&
|
||||
channel.id === counter.channelId
|
||||
) {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`${author.username} sent the last message therefor not allowing again.`
|
||||
);
|
||||
await message.delete();
|
||||
|
@ -41,7 +41,7 @@ export default {
|
|||
}
|
||||
|
||||
if (content !== counter.word) {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`Counter word ${counter.word} does not match message ${content}`
|
||||
);
|
||||
|
||||
|
@ -53,7 +53,7 @@ export default {
|
|||
await counter
|
||||
.save()
|
||||
.then(async () => {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`Counter for guild ${guildId} and channel ${channelId} is now ${counter.counter}`
|
||||
);
|
||||
})
|
||||
|
@ -64,7 +64,7 @@ export default {
|
|||
);
|
||||
});
|
||||
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`Counter word ${counter.word} was found in message ${content} from ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})`
|
||||
);
|
||||
},
|
||||
|
|
|
@ -30,7 +30,7 @@ export default {
|
|||
const timeout = await timeouts.findOne(timeoutData);
|
||||
|
||||
if (timeout) {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`User ${userId} in guild ${guildId} is on timeout 2022-04-14-13-51-00`
|
||||
);
|
||||
return;
|
||||
|
@ -41,7 +41,7 @@ export default {
|
|||
await userData
|
||||
.save()
|
||||
.then(async () => {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`User ${userId} in guild ${guildId} has ${userData.credits} credits`
|
||||
);
|
||||
})
|
||||
|
@ -55,7 +55,7 @@ export default {
|
|||
await timeouts
|
||||
.create(timeoutData)
|
||||
.then(async () => {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`Timeout 2022-04-14-13-51-00 for user ${userId} in guild ${guildId} has been created`
|
||||
);
|
||||
})
|
||||
|
@ -70,7 +70,7 @@ export default {
|
|||
await timeouts
|
||||
.deleteOne(timeoutData)
|
||||
.then(async () => {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`Timeout 2022-04-14-13-51-00 for user ${userId} in guild ${guildId} has been deleted`
|
||||
);
|
||||
})
|
||||
|
|
|
@ -30,7 +30,7 @@ export default {
|
|||
const timeout = await timeouts.findOne(timeoutData);
|
||||
|
||||
if (timeout) {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`User ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id} is on timeout 2022-04-14-14-15-00`
|
||||
);
|
||||
return;
|
||||
|
@ -41,7 +41,7 @@ export default {
|
|||
await userData
|
||||
.save()
|
||||
.then(async () => {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`Successfully saved user ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})`
|
||||
);
|
||||
})
|
||||
|
@ -52,14 +52,14 @@ export default {
|
|||
);
|
||||
});
|
||||
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`User ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id}) has ${userData.points} points`
|
||||
);
|
||||
|
||||
await timeouts
|
||||
.create(timeoutData)
|
||||
.then(async () => {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`Successfully created timeout for user ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})`
|
||||
);
|
||||
})
|
||||
|
@ -74,7 +74,7 @@ export default {
|
|||
await timeouts
|
||||
.deleteOne(timeoutData)
|
||||
.then(async () => {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`Successfully deleted timeout 2022-04-14-14-15-00 for user ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})`
|
||||
);
|
||||
})
|
||||
|
|
|
@ -14,7 +14,7 @@ export default async (message: Message) => {
|
|||
});
|
||||
|
||||
if (counter === null)
|
||||
return logger?.verbose(
|
||||
return logger?.silly(
|
||||
`No counter found for guild: ${guild?.name} (${guild?.id})`
|
||||
);
|
||||
const { word } = counter;
|
||||
|
@ -29,8 +29,8 @@ export default async (message: Message) => {
|
|||
if (lastMessage.author.id === message.author.id) return;
|
||||
|
||||
channel?.send(`${author} said **${word}**.`);
|
||||
logger?.verbose(`${author} said ${word} in ${channel}`);
|
||||
return logger?.verbose(
|
||||
logger?.silly(`${author} said ${word} in ${channel}`);
|
||||
return logger?.silly(
|
||||
`User: ${author?.tag} (${author?.id}) in guild: ${guild?.name} (${guild?.id}) said the counter word: ${word}`
|
||||
);
|
||||
};
|
||||
|
|
|
@ -13,12 +13,11 @@ export default {
|
|||
|
||||
await audits.execute(oldMessage, newMessage);
|
||||
|
||||
logger?.verbose(
|
||||
logger?.silly(
|
||||
`Message update event fired by ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})`
|
||||
);
|
||||
|
||||
if (author?.bot)
|
||||
return logger?.verbose(`Message update event fired by bot`);
|
||||
if (author?.bot) return logger?.silly(`Message update event fired by bot`);
|
||||
|
||||
await counter(newMessage);
|
||||
},
|
||||
|
|
|
@ -14,12 +14,12 @@ export default async (message: Message) => {
|
|||
});
|
||||
|
||||
if (counter === null)
|
||||
return logger?.verbose(
|
||||
return logger?.silly(
|
||||
`No counter found for guild: ${guild?.name} (${guild?.id})`
|
||||
);
|
||||
const { word } = counter;
|
||||
if (content === word)
|
||||
return logger?.verbose(
|
||||
return logger?.silly(
|
||||
`User: ${author?.tag} (${author?.id}) in guild: ${guild?.name} (${guild?.id}) said the counter word: ${word}`
|
||||
);
|
||||
|
||||
|
@ -27,7 +27,7 @@ export default async (message: Message) => {
|
|||
?.delete()
|
||||
?.then(async () => {
|
||||
await channel?.send(`${author} said **${word}**.`);
|
||||
logger?.verbose(`${author} said ${word} in ${channel}`);
|
||||
logger?.silly(`${author} said ${word} in ${channel}`);
|
||||
})
|
||||
?.catch(async (error: any) => {
|
||||
logger?.error(error);
|
||||
|
|
|
@ -10,14 +10,14 @@ import devMode from "@handlers/devMode";
|
|||
export default {
|
||||
once: true,
|
||||
async execute(client: Client) {
|
||||
logger.info(`${client.user?.tag} (${client.user?.id}) is ready`);
|
||||
logger.info("Ready!");
|
||||
|
||||
await updatePresence(client);
|
||||
await devMode(client);
|
||||
await deployCommands(client);
|
||||
|
||||
client.guilds?.cache.forEach((guild) => {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`${client.user?.tag} (${client.user?.id}) is in guild: ${guild.name} (${guild.id}) with member count of ${guild.memberCount}`
|
||||
);
|
||||
});
|
||||
|
|
|
@ -12,7 +12,7 @@ export default async (client: Client) => {
|
|||
}
|
||||
|
||||
await Promise.all(
|
||||
plugins.map(async (pluginName) => {
|
||||
plugins.map(async (pluginName, index) => {
|
||||
const plugin = await import(`../plugins/${pluginName}`);
|
||||
|
||||
await client.commands.set(
|
||||
|
@ -20,10 +20,14 @@ export default async (client: Client) => {
|
|||
plugin.default,
|
||||
plugin.default.metadata
|
||||
);
|
||||
|
||||
logger.verbose(
|
||||
`Loaded plugin ${index + 1}/${plugins.length}: ${pluginName}`
|
||||
);
|
||||
})
|
||||
)
|
||||
.then(async () => {
|
||||
logger.debug("Successfully loaded plugins.");
|
||||
logger.info(`Started all ${plugins.length} plugins.`);
|
||||
})
|
||||
.catch(async (err) => {
|
||||
logger.error(`${err}`);
|
||||
|
|
|
@ -14,12 +14,12 @@ export default async (client: Client) => {
|
|||
client.commands.map(async (pluginData: any) => {
|
||||
pluginList.push(pluginData.builder.toJSON());
|
||||
logger.verbose(
|
||||
`${pluginData.builder.name} successfully pushed to plugin list.`
|
||||
`Plugin is ready for deployment: ${pluginData.builder.name}`
|
||||
);
|
||||
})
|
||||
)
|
||||
.then(async () => {
|
||||
logger.debug("Successfully pushed all plugins to plugin list.");
|
||||
logger.info("All plugins are ready to be deployed.");
|
||||
})
|
||||
.catch(async (error) => {
|
||||
logger.error(`${error}`);
|
||||
|
@ -32,7 +32,7 @@ export default async (client: Client) => {
|
|||
body: pluginList,
|
||||
})
|
||||
.then(async () => {
|
||||
logger.debug(`Successfully deployed plugins to Discord`);
|
||||
logger.info(`Successfully deployed plugins to Discord's API`);
|
||||
})
|
||||
.catch(async (error) => {
|
||||
logger.error(`${error}`);
|
||||
|
@ -44,7 +44,7 @@ export default async (client: Client) => {
|
|||
body: pluginList,
|
||||
})
|
||||
.then(async () =>
|
||||
logger.debug(`Successfully deployed guild plugins to Discord`)
|
||||
logger.info(`Successfully deployed guild plugins to Discord's API`)
|
||||
)
|
||||
.catch(async (error) => {
|
||||
logger.error(`${error}`);
|
||||
|
|
|
@ -9,11 +9,9 @@ import { devMode, guildId } from "@config/other";
|
|||
export default async (client: Client) => {
|
||||
if (!devMode) {
|
||||
return client?.application?.commands?.set([], guildId).then(async () => {
|
||||
return logger.debug(
|
||||
`Development commands disabled for guild: ${guildId}`
|
||||
);
|
||||
return logger.verbose(`Development mode is disabled.`);
|
||||
});
|
||||
}
|
||||
|
||||
return logger.debug(`Development commands enabled for guild: ${guildId}`);
|
||||
return logger.info(`Development mode is enabled.`);
|
||||
};
|
||||
|
|
|
@ -9,10 +9,12 @@ export default async (client: Client) => {
|
|||
}
|
||||
|
||||
await Promise.all(
|
||||
events.map(async (eventName) => {
|
||||
events.map(async (eventName, index) => {
|
||||
const event = await import(`../events/${eventName}`);
|
||||
|
||||
logger.verbose(`Loaded event: ${eventName}`);
|
||||
logger.verbose(
|
||||
`Loaded event ${index + 1}/${events.length}: ${eventName}`
|
||||
);
|
||||
|
||||
if (event.once) {
|
||||
return client.once(eventName, async (...args) =>
|
||||
|
@ -26,10 +28,10 @@ export default async (client: Client) => {
|
|||
})
|
||||
)
|
||||
.then(async () => {
|
||||
logger.debug("Successfully loaded events.");
|
||||
logger.info(`Started all ${events.length} events.`);
|
||||
})
|
||||
.catch(async (err) => {
|
||||
logger.error(err);
|
||||
logger.error(`${err}`);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
|
|
@ -13,7 +13,7 @@ export default async (guild: Guild) => {
|
|||
await guildSchema
|
||||
.deleteMany({ guildId: guild.id })
|
||||
.then(async () => {
|
||||
return logger?.verbose(`Deleted guild: ${guild.id}`);
|
||||
return logger?.silly(`Deleted guild: ${guild.id}`);
|
||||
})
|
||||
.catch(async (error) => {
|
||||
logger?.error(`Error deleting guild: ${guild.id} - ${error}`);
|
||||
|
@ -22,7 +22,7 @@ export default async (guild: Guild) => {
|
|||
await userSchema
|
||||
.deleteMany({ guildId: guild.id })
|
||||
.then(async () => {
|
||||
logger?.verbose(`Deleted users for guild: ${guild.id} from database`);
|
||||
logger?.silly(`Deleted users for guild: ${guild.id} from database`);
|
||||
})
|
||||
.catch(async (error) => {
|
||||
logger?.error(`Error deleting users for guild: ${guild.id} - ${error}`);
|
||||
|
@ -31,7 +31,7 @@ export default async (guild: Guild) => {
|
|||
await apiSchema
|
||||
.deleteMany({ guildId: guild.id })
|
||||
.then(async () => {
|
||||
logger?.verbose(`Deleted apis for guild: ${guild.id} from database`);
|
||||
logger?.silly(`Deleted apis for guild: ${guild.id} from database`);
|
||||
})
|
||||
.catch(async (error) => {
|
||||
logger?.error(`Error deleting apis for guild: ${guild.id} - ${error}`);
|
||||
|
@ -40,7 +40,7 @@ export default async (guild: Guild) => {
|
|||
await counterSchema
|
||||
.deleteMany({ guildId: guild.id })
|
||||
.then(async () => {
|
||||
logger?.verbose(`Deleted counters for guild: ${guild.id} from database`);
|
||||
logger?.silly(`Deleted counters for guild: ${guild.id} from database`);
|
||||
})
|
||||
.catch(async (error) => {
|
||||
logger?.error(
|
||||
|
@ -51,9 +51,7 @@ export default async (guild: Guild) => {
|
|||
await shopRoleSchema
|
||||
.deleteMany({ guildId: guild.id })
|
||||
.then(async () => {
|
||||
logger?.verbose(
|
||||
`Deleted shop roles for guild: ${guild.id} from database`
|
||||
);
|
||||
logger?.silly(`Deleted shop roles for guild: ${guild.id} from database`);
|
||||
})
|
||||
.catch(async (error) => {
|
||||
logger?.error(
|
||||
|
@ -64,7 +62,7 @@ export default async (guild: Guild) => {
|
|||
await timeoutSchema
|
||||
.deleteMany({ guildId: guild.id })
|
||||
.then(async () => {
|
||||
logger?.verbose(`Deleted timeouts for guild: ${guild.id} from database`);
|
||||
logger?.silly(`Deleted timeouts for guild: ${guild.id} from database`);
|
||||
})
|
||||
.catch(async (error) => {
|
||||
logger?.error(
|
||||
|
|
|
@ -8,7 +8,7 @@ export default async (user: User, guild: Guild) => {
|
|||
await userSchema
|
||||
.deleteOne({ userId: user.id, guildId: guild.id })
|
||||
.then(async () => {
|
||||
logger?.verbose(`Deleted user: ${user?.id} from guild: ${guild?.id}`);
|
||||
logger?.silly(`Deleted user: ${user?.id} from guild: ${guild?.id}`);
|
||||
})
|
||||
.catch(async (error) => {
|
||||
logger?.error(
|
||||
|
|
|
@ -16,7 +16,7 @@ export default async (guild: Guild) => {
|
|||
await newGuildObj
|
||||
.save()
|
||||
.then(async () => {
|
||||
logger?.verbose(`Created guild: ${guild.id}`);
|
||||
logger?.silly(`Created guild: ${guild.id}`);
|
||||
})
|
||||
.catch(async (error) => {
|
||||
logger?.error(`Error creating guild: ${guild.id} - ${error}`);
|
||||
|
|
|
@ -22,7 +22,7 @@ export default async (user: User, guild: Guild) => {
|
|||
await newUserObj
|
||||
.save()
|
||||
.then(async () => {
|
||||
logger?.verbose(`Created user: ${user.id} for guild: ${guild.id}`);
|
||||
logger?.silly(`Created user: ${user.id} for guild: ${guild.id}`);
|
||||
})
|
||||
.catch(async (error) => {
|
||||
logger?.error(
|
||||
|
|
|
@ -8,5 +8,5 @@ export default async (interaction: CommandInteraction, currentCommand: any) => {
|
|||
return currentCommand.modules[subcommand].metadata;
|
||||
}
|
||||
|
||||
return currentCommand.groups[subcommandGroup].modules[subcommand].metadata;
|
||||
return currentCommand.modules[subcommandGroup].modules[subcommand].metadata;
|
||||
};
|
||||
|
|
|
@ -2,6 +2,6 @@ import logger from "@root/logger";
|
|||
|
||||
export default (count: number, noun: string, suffix?: string) => {
|
||||
const result = `${count} ${noun}${count !== 1 ? suffix || "s" : ""}`;
|
||||
logger?.verbose(`Pluralized ${count} to ${result}`);
|
||||
logger?.silly(`Pluralized ${count} to ${result}`);
|
||||
return result;
|
||||
};
|
||||
|
|
|
@ -23,7 +23,7 @@ export default async function saveUser(data: any, data2: any) {
|
|||
50
|
||||
)}\n${`${_}\n${"=".repeat(50)}`}`
|
||||
)
|
||||
: logger?.verbose(`Saved user: ${data.id} (saveUser)`)
|
||||
: logger?.silly(`Saved user: ${data.id} (saveUser)`)
|
||||
);
|
||||
if (data2) {
|
||||
data2.save((_: any) =>
|
||||
|
@ -33,7 +33,7 @@ export default async function saveUser(data: any, data2: any) {
|
|||
50
|
||||
)}\n${`${_}\n${"=".repeat(50)}`}`
|
||||
)
|
||||
: logger?.verbose(`Saved user: ${data2.id} (saveUser)`)
|
||||
: logger?.silly(`Saved user: ${data2.id} (saveUser)`)
|
||||
);
|
||||
}
|
||||
},
|
||||
|
|
|
@ -3,6 +3,6 @@ import logger from "@logger";
|
|||
export default function sleep(milliseconds: any) {
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(resolve, milliseconds);
|
||||
logger?.verbose(`Sleeping for ${milliseconds} milliseconds`);
|
||||
logger?.silly(`Sleeping for ${milliseconds} milliseconds`);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -10,5 +10,5 @@ export default async (client: Client) => {
|
|||
activities: [{ type: "WATCHING", name: status }],
|
||||
status: "online",
|
||||
});
|
||||
logger?.verbose(`Updated client presence to: ${status}`);
|
||||
logger?.debug(`Updated client presence to: ${status}`);
|
||||
};
|
||||
|
|
|
@ -4,7 +4,7 @@ import { token, intents } from "@config/discord";
|
|||
|
||||
import { Client } from "discord.js"; // discord.js
|
||||
|
||||
import database from "@database";
|
||||
import database from "@root/events";
|
||||
import schedules from "@schedules";
|
||||
import events from "@handlers/events";
|
||||
import commands from "@handlers/commands";
|
||||
|
|
|
@ -17,10 +17,10 @@ export default {
|
|||
const { options } = interaction;
|
||||
|
||||
if (options.getSubcommand() === "view") {
|
||||
logger.verbose(`Executing view subcommand`);
|
||||
logger.silly(`Executing view subcommand`);
|
||||
return modules.view.execute(interaction);
|
||||
}
|
||||
|
||||
logger.verbose(`Unknown subcommand ${options.getSubcommand()}`);
|
||||
logger.silly(`Unknown subcommand ${options.getSubcommand()}`);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -33,7 +33,7 @@ export default {
|
|||
await modules.work.execute(interaction);
|
||||
break;
|
||||
default:
|
||||
logger.verbose(`Unknown subcommand ${options.getSubcommand()}`);
|
||||
logger.silly(`Unknown subcommand ${options.getSubcommand()}`);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -5,7 +5,6 @@ import {
|
|||
footerIcon,
|
||||
} from "@config/embed";
|
||||
|
||||
import i18next from "i18next";
|
||||
import { CommandInteraction, MessageEmbed } from "discord.js";
|
||||
import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
|
||||
import logger from "@logger";
|
||||
|
@ -25,33 +24,21 @@ export default {
|
|||
);
|
||||
},
|
||||
execute: async (interaction: CommandInteraction) => {
|
||||
const { options, user, guild, locale } = interaction;
|
||||
const { options, user, guild } = interaction;
|
||||
|
||||
const discordUser = options.getUser("user");
|
||||
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(
|
||||
i18next.t("credits:modules:balance:general:title", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
})
|
||||
)
|
||||
.setTitle("[:dollar:] Balance")
|
||||
.setTimestamp(new Date())
|
||||
.setFooter({ text: footerText, iconURL: footerIcon });
|
||||
|
||||
if (guild === null) {
|
||||
logger.verbose(`Guild is null`);
|
||||
logger.silly(`Guild is null`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("guildOnly", {
|
||||
lng: locale,
|
||||
ns: "errors",
|
||||
})
|
||||
)
|
||||
.setColor(errorColor),
|
||||
embed.setDescription("Guild is not found").setColor(errorColor),
|
||||
],
|
||||
});
|
||||
}
|
||||
|
@ -59,17 +46,13 @@ export default {
|
|||
const userObj = await fetchUser(discordUser || user, guild);
|
||||
|
||||
if (userObj === null) {
|
||||
logger.verbose(`User not found`);
|
||||
logger.silly(`User not found`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("userNotFound", {
|
||||
lng: locale,
|
||||
ns: "errors",
|
||||
user: discordUser || user,
|
||||
})
|
||||
"User is not found. Please try again with a valid user."
|
||||
)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
|
@ -77,35 +60,22 @@ export default {
|
|||
}
|
||||
|
||||
if (userObj.credits === null) {
|
||||
logger.verbose(`User has no credits`);
|
||||
logger.silly(`User has no credits`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("credits:modules:balance:error01:description", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
user: discordUser || user,
|
||||
})
|
||||
)
|
||||
.setColor(errorColor),
|
||||
embed.setDescription("Credits not found").setColor(errorColor),
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
logger.verbose(`Found user ${discordUser || user}`);
|
||||
logger.silly(`Found user ${discordUser || user}`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("credits:modules:balance:success01:description", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
user: discordUser || user,
|
||||
amount: userObj.credits,
|
||||
})
|
||||
`${discordUser || user} currently has ${userObj.credits} credits.`
|
||||
)
|
||||
.setColor(successColor),
|
||||
],
|
||||
|
|
|
@ -18,7 +18,6 @@ import saveUser from "@helpers/saveUser";
|
|||
// Models
|
||||
import fetchUser from "@helpers/fetchUser";
|
||||
import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
|
||||
import i18next from "i18next";
|
||||
|
||||
// Function
|
||||
export default {
|
||||
|
@ -52,44 +51,27 @@ export default {
|
|||
const optionReason = options.getString("reason");
|
||||
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(
|
||||
i18next.t("credits:modules:gift:general:title", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
})
|
||||
)
|
||||
.setTitle("[:dollar:] Gift")
|
||||
.setTimestamp(new Date())
|
||||
.setFooter({ text: footerText, iconURL: footerIcon });
|
||||
|
||||
if (guild === null) {
|
||||
logger.verbose(`Guild is null`);
|
||||
logger.silly(`Guild is null`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("guildOnly", {
|
||||
lng: locale,
|
||||
ns: "errors",
|
||||
})
|
||||
)
|
||||
.setColor(errorColor),
|
||||
embed.setDescription("Guild is not found").setColor(errorColor),
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
if (optionUser === null) {
|
||||
logger.verbose(`User not found`);
|
||||
logger.silly(`User not found`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("userNotFound", {
|
||||
lng: locale,
|
||||
ns: "errors",
|
||||
})
|
||||
)
|
||||
.setDescription(`User is not found in this guild`)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
});
|
||||
|
@ -102,16 +84,13 @@ export default {
|
|||
const toUserDB = await fetchUser(optionUser, guild);
|
||||
|
||||
if (fromUserDB === null) {
|
||||
logger.verbose(`User not found`);
|
||||
logger.silly(`User not found`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("userNotFound", {
|
||||
lng: locale,
|
||||
ns: "errors",
|
||||
})
|
||||
"You do not have any credits. Please write something in the chat to get some."
|
||||
)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
|
@ -119,16 +98,13 @@ export default {
|
|||
}
|
||||
|
||||
if (toUserDB === null) {
|
||||
logger.verbose(`User not found`);
|
||||
logger.silly(`User not found`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("userNotFound", {
|
||||
lng: locale,
|
||||
ns: "errors",
|
||||
})
|
||||
"The user you want to gift credits to does not have any credits. Please wait until that user has typed something in the chat to get some."
|
||||
)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
|
@ -137,16 +113,13 @@ export default {
|
|||
|
||||
// If receiver is same as sender
|
||||
if (optionUser.id === user.id) {
|
||||
logger.verbose(`User is same as sender`);
|
||||
logger.silly(`User is same as sender`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("credits:modules:gift:error01:description", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
})
|
||||
"You can't gift credits to yourself. Please choose a different user."
|
||||
)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
|
@ -155,16 +128,13 @@ export default {
|
|||
|
||||
// If amount is null
|
||||
if (optionAmount === null) {
|
||||
logger.verbose(`Amount is null`);
|
||||
logger.silly(`Amount is null`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("amountNotFound", {
|
||||
lng: locale,
|
||||
ns: "errors",
|
||||
})
|
||||
"Please specify the amount of credits you want to gift."
|
||||
)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
|
@ -173,16 +143,13 @@ export default {
|
|||
|
||||
// If amount is zero or below
|
||||
if (optionAmount <= 0) {
|
||||
logger.verbose(`Amount is zero or below`);
|
||||
logger.silly(`Amount is zero or below`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("credits:modules:gift:error02:description", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
})
|
||||
"Please specify a valid amount of credits you want to gift."
|
||||
)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
|
@ -191,17 +158,13 @@ export default {
|
|||
|
||||
// If user has below gifting amount
|
||||
if (fromUserDB.credits < optionAmount) {
|
||||
logger.verbose(`User has below gifting amount`);
|
||||
logger.silly(`User has below gifting amount`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("credits:modules:gift:error03:description", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
amount: fromUserDB.credits,
|
||||
})
|
||||
"You don't have enough credits to gift that amount. Please try again with a lower amount."
|
||||
)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
|
@ -210,28 +173,19 @@ export default {
|
|||
|
||||
// If toUserDB has no credits
|
||||
if (toUserDB === null) {
|
||||
logger.verbose(`User has no credits`);
|
||||
logger.silly(`User has no credits`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("userNotFound", {
|
||||
lng: locale,
|
||||
ns: "errors",
|
||||
})
|
||||
"The user you want to gift credits to does not have any credits. Please wait until that user has typed something in the chat to get some."
|
||||
)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
// Withdraw amount from fromUserDB
|
||||
fromUserDB.credits -= optionAmount;
|
||||
|
||||
// Deposit amount to toUserDB
|
||||
toUserDB.credits += optionAmount;
|
||||
|
||||
// Save users
|
||||
await saveUser(fromUserDB, toUserDB).then(async () => {
|
||||
// Get DM user object
|
||||
|
@ -245,13 +199,11 @@ export default {
|
|||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("credits:modules:gift:error03:description", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
user: user.tag,
|
||||
amount: optionAmount,
|
||||
reason: optionReason || "unspecified",
|
||||
})
|
||||
`${
|
||||
user.tag
|
||||
} has gifted you ${optionAmount} credits with reason: ${
|
||||
optionReason || "unspecified"
|
||||
}`
|
||||
)
|
||||
.setColor(successColor),
|
||||
],
|
||||
|
@ -260,7 +212,7 @@ export default {
|
|||
logger.error(`[Gift] Error sending DM to user: ${error}`)
|
||||
);
|
||||
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`[Gift] Successfully gifted ${optionAmount} credits to ${optionUser.tag}`
|
||||
);
|
||||
|
||||
|
@ -268,13 +220,9 @@ export default {
|
|||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("credits:modules:gift:success02:description", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
user: user,
|
||||
amount: optionAmount,
|
||||
reason: optionReason || "unspecified",
|
||||
})
|
||||
`Successfully gifted ${optionAmount} credits to ${
|
||||
optionUser.tag
|
||||
} with reason: ${optionReason || "unspecified"}`
|
||||
)
|
||||
.setColor(successColor),
|
||||
],
|
||||
|
|
|
@ -5,7 +5,6 @@ import {
|
|||
footerIcon,
|
||||
} from "@config/embed";
|
||||
|
||||
import i18next from "i18next";
|
||||
import { CommandInteraction, MessageEmbed } from "discord.js";
|
||||
import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
|
||||
import logger from "@logger";
|
||||
|
@ -19,29 +18,21 @@ export default {
|
|||
return command.setName("top").setDescription(`View the top users`);
|
||||
},
|
||||
execute: async (interaction: CommandInteraction) => {
|
||||
const { locale, guild } = interaction;
|
||||
const { guild } = interaction;
|
||||
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(
|
||||
i18next.t("credits:modules:top:general:title", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
})
|
||||
)
|
||||
.setTitle("[:dollar:] Top")
|
||||
.setTimestamp(new Date())
|
||||
.setFooter({ text: footerText, iconURL: footerIcon });
|
||||
|
||||
if (guild === null) {
|
||||
logger.verbose(`Guild is null`);
|
||||
logger.silly(`Guild is null`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("guildOnly", {
|
||||
lng: locale,
|
||||
ns: "errors",
|
||||
})
|
||||
"Guild is not found. Please try again with a valid guild."
|
||||
)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
|
@ -60,22 +51,13 @@ export default {
|
|||
|
||||
// Create entry object
|
||||
const entry = (x: IUser, index: number) =>
|
||||
i18next.t("credits:modules:top:entry", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
index: index + 1,
|
||||
user: x.userId,
|
||||
amount: x.credits,
|
||||
});
|
||||
`${index + 1}. <@${x.userId}> - ${x.credits} credits`;
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
` ${i18next.t("credits:modules:top:success01:description", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
})}
|
||||
`Below are the top 10 users in this guild.
|
||||
|
||||
${topTen.map(entry).join("\n")}
|
||||
`
|
||||
|
|
|
@ -20,7 +20,6 @@ import timeoutSchema from "@schemas/timeout";
|
|||
// Helpers
|
||||
import fetchUser from "@helpers/fetchUser";
|
||||
import fetchGuild from "@helpers/fetchGuild";
|
||||
import i18next from "i18next";
|
||||
|
||||
export default {
|
||||
metadata: { guildOnly: true, ephemeral: true },
|
||||
|
@ -30,15 +29,10 @@ export default {
|
|||
},
|
||||
execute: async (interaction: CommandInteraction) => {
|
||||
// Destructure member
|
||||
const { guild, user, locale } = interaction;
|
||||
const { guild, user } = interaction;
|
||||
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(
|
||||
i18next.t("credits:modules:work:general:title", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
})
|
||||
)
|
||||
.setTitle("[:dollar:] Work")
|
||||
.setTimestamp(new Date())
|
||||
.setFooter({
|
||||
text: footerText,
|
||||
|
@ -56,24 +50,20 @@ export default {
|
|||
});
|
||||
|
||||
if (guild === null) {
|
||||
return logger?.verbose(`Guild is null`);
|
||||
return logger?.silly(`Guild is null`);
|
||||
}
|
||||
|
||||
const guildDB = await fetchGuild(guild);
|
||||
|
||||
// If user is not on timeout
|
||||
if (isTimeout) {
|
||||
logger?.verbose(`User ${user?.id} is on timeout`);
|
||||
logger?.silly(`User ${user?.id} is on timeout`);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("credits:modules:work:error01:description", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
time: guildDB?.credits.workTimeout,
|
||||
})
|
||||
`You are on timeout, please wait ${guildDB?.credits.workTimeout} seconds.`
|
||||
)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
|
@ -88,27 +78,20 @@ export default {
|
|||
const userDB = await fetchUser(user, guild);
|
||||
|
||||
if (userDB === null) {
|
||||
return logger?.verbose(`User not found`);
|
||||
return logger?.silly(`User not found`);
|
||||
}
|
||||
|
||||
userDB.credits += creditsEarned;
|
||||
|
||||
await userDB?.save()?.then(async () => {
|
||||
logger?.verbose(
|
||||
logger?.silly(
|
||||
`User ${userDB?.userId} worked and earned ${creditsEarned} credits`
|
||||
);
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("credits:modules:work:success01:description", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
time: guildDB?.credits.workTimeout,
|
||||
amount: creditsEarned,
|
||||
})
|
||||
)
|
||||
.setDescription(`You worked and earned ${creditsEarned} credits.`)
|
||||
.setColor(successColor),
|
||||
],
|
||||
});
|
||||
|
@ -122,7 +105,7 @@ export default {
|
|||
});
|
||||
|
||||
setTimeout(async () => {
|
||||
logger?.verbose(`Removing timeout for user ${user?.id}`);
|
||||
logger?.silly(`Removing timeout for user ${user?.id}`);
|
||||
|
||||
// When timeout is out, remove it from the database
|
||||
await timeoutSchema?.deleteOne({
|
||||
|
|
|
@ -21,7 +21,7 @@ export default {
|
|||
await modules.meme.execute(interaction);
|
||||
break;
|
||||
default:
|
||||
logger.verbose(`Unknown subcommand ${options.getSubcommand()}`);
|
||||
logger.silly(`Unknown subcommand ${options.getSubcommand()}`);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
import add from "@plugins/manage/groups/counters/modules/add";
|
||||
import remove from "@plugins/manage/groups/counters/modules/remove";
|
||||
|
||||
export default { add, remove };
|
|
@ -1,6 +0,0 @@
|
|||
import give from "@plugins/manage/groups/credits/modules/give";
|
||||
import set from "@plugins/manage/groups/credits/modules/set";
|
||||
import take from "@plugins/manage/groups/credits/modules/take";
|
||||
import transfer from "@plugins/manage/groups/credits/modules/transfer";
|
||||
|
||||
export default { give, set, take, transfer };
|
|
@ -1,4 +0,0 @@
|
|||
import counters from "@plugins/manage/groups/counters";
|
||||
import credits from "@plugins/manage/groups/credits";
|
||||
|
||||
export default { counters, credits };
|
|
@ -3,35 +3,35 @@ import { SlashCommandBuilder } from "@discordjs/builders";
|
|||
import { CommandInteraction } from "discord.js";
|
||||
|
||||
// Groups
|
||||
import groups from "@plugins/manage/groups";
|
||||
import modules from "@plugins/manage/modules";
|
||||
import logger from "@logger";
|
||||
|
||||
// Function
|
||||
export default {
|
||||
groups,
|
||||
modules,
|
||||
|
||||
builder: new SlashCommandBuilder()
|
||||
.setName("manage")
|
||||
.setDescription("Manage the bot.")
|
||||
.addSubcommandGroup(groups.counters.builder)
|
||||
.addSubcommandGroup(groups.credits.builder),
|
||||
.addSubcommandGroup(modules.counters.builder)
|
||||
.addSubcommandGroup(modules.credits.builder),
|
||||
|
||||
async execute(interaction: CommandInteraction) {
|
||||
// Destructure
|
||||
const { options } = interaction;
|
||||
|
||||
if (options?.getSubcommandGroup() === "credits") {
|
||||
logger?.verbose(`Subcommand group is credits`);
|
||||
logger?.silly(`Subcommand group is credits`);
|
||||
|
||||
return groups.credits.execute(interaction);
|
||||
return modules.credits.execute(interaction);
|
||||
}
|
||||
|
||||
if (options?.getSubcommandGroup() === "counters") {
|
||||
logger?.verbose(`Subcommand group is counters`);
|
||||
logger?.silly(`Subcommand group is counters`);
|
||||
|
||||
return groups.counters.execute(interaction);
|
||||
return modules.counters.execute(interaction);
|
||||
}
|
||||
|
||||
logger?.verbose(`Subcommand group is not credits or counters`);
|
||||
logger?.silly(`Subcommand group is not credits or counters`);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -23,17 +23,17 @@ export default {
|
|||
const { options } = interaction;
|
||||
|
||||
if (options?.getSubcommand() === "add") {
|
||||
logger?.verbose(`Executing create subcommand`);
|
||||
logger?.silly(`Executing create subcommand`);
|
||||
|
||||
return modules.add.execute(interaction);
|
||||
}
|
||||
|
||||
if (options?.getSubcommand() === "remove") {
|
||||
logger?.verbose(`Executing delete subcommand`);
|
||||
logger?.silly(`Executing delete subcommand`);
|
||||
|
||||
return modules.remove.execute(interaction);
|
||||
}
|
||||
|
||||
logger?.verbose(`Unknown subcommand ${options?.getSubcommand()}`);
|
||||
logger?.silly(`Unknown subcommand ${options?.getSubcommand()}`);
|
||||
},
|
||||
};
|
|
@ -16,7 +16,6 @@ import logger from "@logger";
|
|||
|
||||
// Models
|
||||
import counterSchema from "@schemas/counter";
|
||||
import i18next from "i18next";
|
||||
|
||||
// Function
|
||||
export default {
|
||||
|
@ -57,12 +56,7 @@ export default {
|
|||
const startValue = options?.getNumber("start");
|
||||
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(
|
||||
i18next.t("manage:groups:counters:modules:add:general:title", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
})
|
||||
)
|
||||
.setTitle("[:toolbox:] Counters - Add")
|
||||
.setTimestamp(new Date())
|
||||
.setFooter({ text: footerText, iconURL: footerIcon });
|
||||
|
||||
|
@ -75,16 +69,7 @@ export default {
|
|||
return interaction?.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t(
|
||||
"manage:groups:counters:modules:add:error01:description",
|
||||
{
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
channel: discordChannel,
|
||||
}
|
||||
)
|
||||
)
|
||||
.setDescription(`A counter already exists for this channel.`)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
});
|
||||
|
@ -98,20 +83,13 @@ export default {
|
|||
counter: startValue || 0,
|
||||
})
|
||||
.then(async () => {
|
||||
logger?.verbose(`Created counter`);
|
||||
logger?.silly(`Created counter`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t(
|
||||
"manage:groups:counters:modules:create:success01:description",
|
||||
{
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
channel: discordChannel,
|
||||
}
|
||||
)
|
||||
`Successfully created counter for ${discordChannel?.name}.`
|
||||
)
|
||||
.setColor(successColor),
|
||||
],
|
4
src/plugins/manage/modules/counters/modules/index.ts
Normal file
4
src/plugins/manage/modules/counters/modules/index.ts
Normal file
|
@ -0,0 +1,4 @@
|
|||
import add from "@plugins/manage/modules/counters/modules/add";
|
||||
import remove from "@plugins/manage/modules/counters/modules/remove";
|
||||
|
||||
export default { add, remove };
|
|
@ -16,7 +16,6 @@ import logger from "@logger";
|
|||
import counterSchema from "@schemas/counter";
|
||||
import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
|
||||
import { ChannelType } from "discord-api-types/v10";
|
||||
import i18next from "i18next";
|
||||
|
||||
// Function
|
||||
export default {
|
||||
|
@ -44,12 +43,7 @@ export default {
|
|||
const discordChannel = options?.getChannel("channel");
|
||||
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(
|
||||
i18next.t("manage:groups:counters:modules:remove:general:title", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
})
|
||||
)
|
||||
.setTitle("[:toolbox:] Counters - Remove")
|
||||
.setTimestamp(new Date())
|
||||
.setFooter({ text: footerText, iconURL: footerIcon });
|
||||
|
||||
|
@ -59,19 +53,13 @@ export default {
|
|||
});
|
||||
|
||||
if (counter === null) {
|
||||
logger?.verbose(`Counter is null`);
|
||||
logger?.silly(`Counter is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t(
|
||||
"manage:groups:counters:modules:remove:error01:description",
|
||||
{
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
}
|
||||
)
|
||||
":x: There is no counter in this channel. Please add a counter first."
|
||||
)
|
||||
.setColor(errorColor),
|
||||
],
|
||||
|
@ -84,19 +72,13 @@ export default {
|
|||
channelId: discordChannel?.id,
|
||||
})
|
||||
?.then(async () => {
|
||||
logger?.verbose(`Counter deleted`);
|
||||
logger?.silly(`Counter deleted`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t(
|
||||
"manage:groups:counters:modules:remove:success01:description",
|
||||
{
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
}
|
||||
)
|
||||
":white_check_mark: Counter deleted successfully."
|
||||
)
|
||||
.setColor(successColor),
|
||||
],
|
|
@ -21,23 +21,23 @@ export default {
|
|||
|
||||
switch (options.getSubcommand()) {
|
||||
case "give":
|
||||
logger.verbose(`Executing give subcommand`);
|
||||
logger.silly(`Executing give subcommand`);
|
||||
|
||||
return modules.give.execute(interaction);
|
||||
case "set":
|
||||
logger.verbose(`Executing set subcommand`);
|
||||
logger.silly(`Executing set subcommand`);
|
||||
|
||||
return modules.set.execute(interaction);
|
||||
case "take":
|
||||
logger.verbose(`Executing take subcommand`);
|
||||
logger.silly(`Executing take subcommand`);
|
||||
|
||||
return modules.take.execute(interaction);
|
||||
case "transfer":
|
||||
logger.verbose(`Executing transfer subcommand`);
|
||||
logger.silly(`Executing transfer subcommand`);
|
||||
|
||||
return modules.transfer.execute(interaction);
|
||||
default:
|
||||
logger.verbose(`Unknown subcommand ${options.getSubcommand()}`);
|
||||
logger.silly(`Unknown subcommand ${options.getSubcommand()}`);
|
||||
}
|
||||
},
|
||||
};
|
|
@ -53,7 +53,7 @@ export default {
|
|||
|
||||
// If amount option is null
|
||||
if (creditAmount === null) {
|
||||
logger?.verbose(`Amount is null`);
|
||||
logger?.silly(`Amount is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -69,7 +69,7 @@ export default {
|
|||
|
||||
// If amount is zero or below
|
||||
if (creditAmount <= 0) {
|
||||
logger?.verbose(`Amount is zero or below`);
|
||||
logger?.silly(`Amount is zero or below`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -84,7 +84,7 @@ export default {
|
|||
}
|
||||
|
||||
if (discordReceiver === null) {
|
||||
logger?.verbose(`Discord receiver is null`);
|
||||
logger?.silly(`Discord receiver is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -98,7 +98,7 @@ export default {
|
|||
});
|
||||
}
|
||||
if (guild === null) {
|
||||
logger?.verbose(`Guild is null`);
|
||||
logger?.silly(`Guild is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -115,7 +115,7 @@ export default {
|
|||
const toUser = await fetchUser(discordReceiver, guild);
|
||||
|
||||
if (toUser === null) {
|
||||
logger?.verbose(`To user is null`);
|
||||
logger?.silly(`To user is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -147,7 +147,7 @@ export default {
|
|||
|
||||
// Save toUser
|
||||
await toUser?.save()?.then(async () => {
|
||||
logger?.verbose(`Saved toUser`);
|
||||
logger?.silly(`Saved toUser`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
6
src/plugins/manage/modules/credits/modules/index.ts
Normal file
6
src/plugins/manage/modules/credits/modules/index.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
import give from "@plugins/manage/modules/credits/modules/give";
|
||||
import set from "@plugins/manage/modules/credits/modules/set";
|
||||
import take from "@plugins/manage/modules/credits/modules/take";
|
||||
import transfer from "@plugins/manage/modules/credits/modules/transfer";
|
||||
|
||||
export default { give, set, take, transfer };
|
|
@ -51,7 +51,7 @@ export default {
|
|||
|
||||
// If amount is null
|
||||
if (creditAmount === null) {
|
||||
logger?.verbose(`Amount is null`);
|
||||
logger?.silly(`Amount is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -66,7 +66,7 @@ export default {
|
|||
}
|
||||
|
||||
if (discordUser === null) {
|
||||
logger?.verbose(`User is null`);
|
||||
logger?.silly(`User is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -80,7 +80,7 @@ export default {
|
|||
});
|
||||
}
|
||||
if (guild === null) {
|
||||
logger?.verbose(`Guild is null`);
|
||||
logger?.silly(`Guild is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -99,7 +99,7 @@ export default {
|
|||
|
||||
// If toUser does not exist
|
||||
if (toUser === null) {
|
||||
logger?.verbose(`User does not exist`);
|
||||
logger?.silly(`User does not exist`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -115,7 +115,7 @@ export default {
|
|||
|
||||
// If toUser.credits does not exist
|
||||
if (toUser?.credits === null) {
|
||||
logger?.verbose(`User does not have any credits`);
|
||||
logger?.silly(`User does not have any credits`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -134,7 +134,7 @@ export default {
|
|||
|
||||
// Save toUser
|
||||
await toUser?.save()?.then(async () => {
|
||||
logger?.verbose(`Saved user`);
|
||||
logger?.silly(`Saved user`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
|
@ -56,7 +56,7 @@ export default {
|
|||
|
||||
// If amount is null
|
||||
if (optionAmount === null) {
|
||||
logger?.verbose(`Amount is null`);
|
||||
logger?.silly(`Amount is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -72,7 +72,7 @@ export default {
|
|||
|
||||
// If amount is zero or below
|
||||
if (optionAmount <= 0) {
|
||||
logger?.verbose(`Amount is zero or below`);
|
||||
logger?.silly(`Amount is zero or below`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -87,7 +87,7 @@ export default {
|
|||
}
|
||||
|
||||
if (optionUser === null) {
|
||||
logger?.verbose(`Discord receiver is null`);
|
||||
logger?.silly(`Discord receiver is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -101,7 +101,7 @@ export default {
|
|||
});
|
||||
}
|
||||
if (guild === null) {
|
||||
logger?.verbose(`Guild is null`);
|
||||
logger?.silly(`Guild is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -120,7 +120,7 @@ export default {
|
|||
|
||||
// If toUser does not exist
|
||||
if (toUser === null) {
|
||||
logger?.verbose(`ToUser is null`);
|
||||
logger?.silly(`ToUser is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -136,7 +136,7 @@ export default {
|
|||
|
||||
// If toUser.credits does not exist
|
||||
if (toUser?.credits === null) {
|
||||
logger?.verbose(`ToUser.credits is null`);
|
||||
logger?.silly(`ToUser.credits is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -155,7 +155,7 @@ export default {
|
|||
|
||||
// Save toUser
|
||||
await toUser?.save()?.then(async () => {
|
||||
logger?.verbose(`Saved toUser`);
|
||||
logger?.silly(`Saved toUser`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
|
@ -61,7 +61,7 @@ export default {
|
|||
|
||||
// If amount is null
|
||||
if (optionAmount === null) {
|
||||
logger?.verbose(`Amount is null`);
|
||||
logger?.silly(`Amount is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -76,7 +76,7 @@ export default {
|
|||
}
|
||||
|
||||
if (guild === null) {
|
||||
logger?.verbose(`Guild is null`);
|
||||
logger?.silly(`Guild is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -90,7 +90,7 @@ export default {
|
|||
});
|
||||
}
|
||||
if (optionFromUser === null) {
|
||||
logger?.verbose(`From user is null`);
|
||||
logger?.silly(`From user is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -104,7 +104,7 @@ export default {
|
|||
});
|
||||
}
|
||||
if (optionToUser === null) {
|
||||
logger?.verbose(`To user is null`);
|
||||
logger?.silly(`To user is null`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -126,7 +126,7 @@ export default {
|
|||
|
||||
// If toUser does not exist
|
||||
if (fromUser === null) {
|
||||
logger?.verbose(`From user does not exist`);
|
||||
logger?.silly(`From user does not exist`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -144,7 +144,7 @@ export default {
|
|||
|
||||
// If toUser.credits does not exist
|
||||
if (!fromUser?.credits) {
|
||||
logger?.verbose(`From user does not have credits`);
|
||||
logger?.silly(`From user does not have credits`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -162,7 +162,7 @@ export default {
|
|||
|
||||
// If toUser does not exist
|
||||
if (toUser === null) {
|
||||
logger?.verbose(`To user does not exist`);
|
||||
logger?.silly(`To user does not exist`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -180,7 +180,7 @@ export default {
|
|||
|
||||
// If toUser.credits does not exist
|
||||
if (toUser?.credits === null) {
|
||||
logger?.verbose(`To user does not have credits`);
|
||||
logger?.silly(`To user does not have credits`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -204,7 +204,7 @@ export default {
|
|||
|
||||
// Save users
|
||||
await saveUser(fromUser, toUser)?.then(async () => {
|
||||
logger?.verbose(`Saved users`);
|
||||
logger?.silly(`Saved users`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
4
src/plugins/manage/modules/index.ts
Normal file
4
src/plugins/manage/modules/index.ts
Normal file
|
@ -0,0 +1,4 @@
|
|||
import counters from "@plugins/manage/modules/counters";
|
||||
import credits from "@plugins/manage/modules/credits";
|
||||
|
||||
export default { counters, credits };
|
|
@ -20,11 +20,11 @@ export default {
|
|||
const { options } = interaction;
|
||||
|
||||
if (options?.getSubcommand() === "view") {
|
||||
logger?.verbose(`Executing view subcommand`);
|
||||
logger?.silly(`Executing view subcommand`);
|
||||
|
||||
return modules.view.execute(interaction);
|
||||
}
|
||||
|
||||
logger?.verbose(`No subcommand found`);
|
||||
logger?.silly(`No subcommand found`);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -36,7 +36,7 @@ export default {
|
|||
);
|
||||
|
||||
if (guild === null) {
|
||||
return logger?.verbose(`Guild is null`);
|
||||
return logger?.silly(`Guild is null`);
|
||||
}
|
||||
|
||||
// User Information
|
||||
|
|
|
@ -19,11 +19,11 @@ export default {
|
|||
const { options } = interaction;
|
||||
|
||||
if (options?.getSubcommand() === "give") {
|
||||
logger?.verbose(`Executing give subcommand`);
|
||||
logger?.silly(`Executing give subcommand`);
|
||||
|
||||
await modules.give.execute(interaction);
|
||||
}
|
||||
|
||||
logger?.verbose(`No subcommand found`);
|
||||
logger?.silly(`No subcommand found`);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -58,14 +58,14 @@ export default {
|
|||
const optionType = options?.getString("type");
|
||||
|
||||
if (guild === null) {
|
||||
return logger?.verbose(`Guild is null`);
|
||||
return logger?.silly(`Guild is null`);
|
||||
}
|
||||
|
||||
// User information
|
||||
const userObj = await fetchUser(user, guild);
|
||||
|
||||
if (userObj === null) {
|
||||
return logger?.verbose(`User is null`);
|
||||
return logger?.silly(`User is null`);
|
||||
}
|
||||
|
||||
// Check if user has a timeout
|
||||
|
@ -77,7 +77,7 @@ export default {
|
|||
|
||||
// If user is not on timeout
|
||||
if (isTimeout) {
|
||||
logger?.verbose(`User is on timeout`);
|
||||
logger?.silly(`User is on timeout`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -97,7 +97,7 @@ export default {
|
|||
|
||||
// Do not allow self reputation
|
||||
if (optionTarget?.id === user?.id) {
|
||||
logger?.verbose(`User is trying to give reputation to self`);
|
||||
logger?.silly(`User is trying to give reputation to self`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -117,21 +117,21 @@ export default {
|
|||
|
||||
// If type is positive
|
||||
if (optionType === "positive") {
|
||||
logger?.verbose(`User is giving positive reputation`);
|
||||
logger?.silly(`User is giving positive reputation`);
|
||||
|
||||
userObj.reputation += 1;
|
||||
}
|
||||
|
||||
// If type is negative
|
||||
else if (optionType === "negative") {
|
||||
logger?.verbose(`User is giving negative reputation`);
|
||||
logger?.silly(`User is giving negative reputation`);
|
||||
|
||||
userObj.reputation -= 1;
|
||||
}
|
||||
|
||||
// Save user
|
||||
await userObj?.save()?.then(async () => {
|
||||
logger?.verbose(`User reputation has been updated`);
|
||||
logger?.silly(`User reputation has been updated`);
|
||||
|
||||
await timeoutSchema?.create({
|
||||
guildId: guild?.id,
|
||||
|
@ -156,7 +156,7 @@ export default {
|
|||
});
|
||||
|
||||
setTimeout(async () => {
|
||||
logger?.verbose(`Removing timeout`);
|
||||
logger?.silly(`Removing timeout`);
|
||||
|
||||
await timeoutSchema?.deleteOne({
|
||||
guildId: guild?.id,
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
import audits from "@plugins/settings/groups/guild/modules/audits";
|
||||
import credits from "@plugins/settings/groups/guild/modules/credits";
|
||||
import points from "@plugins/settings/groups/guild/modules/points";
|
||||
import pterodactyl from "@plugins/settings/groups/guild/modules/pterodactyl";
|
||||
import shop from "@plugins/settings/groups/guild/modules/shop";
|
||||
import welcome from "@plugins/settings/groups/guild/modules/welcome";
|
||||
|
||||
export default { audits, credits, points, pterodactyl, shop, welcome };
|
|
@ -1,3 +0,0 @@
|
|||
import guild from "@plugins/settings/groups/guild";
|
||||
|
||||
export default { guild };
|
|
@ -2,31 +2,31 @@
|
|||
import { SlashCommandBuilder } from "@discordjs/builders";
|
||||
import { CommandInteraction } from "discord.js";
|
||||
|
||||
// Groups
|
||||
import groups from "./groups";
|
||||
// Modules
|
||||
import modules from "./modules";
|
||||
|
||||
// Handlers
|
||||
import logger from "@logger";
|
||||
|
||||
// Function
|
||||
export default {
|
||||
groups,
|
||||
modules,
|
||||
|
||||
builder: new SlashCommandBuilder()
|
||||
.setName("settings")
|
||||
.setDescription("Manage settings.")
|
||||
|
||||
.addSubcommandGroup(groups.guild.builder),
|
||||
.addSubcommandGroup(modules.guild.builder),
|
||||
|
||||
async execute(interaction: CommandInteraction) {
|
||||
const { options } = interaction;
|
||||
|
||||
if (options.getSubcommandGroup() === "guild") {
|
||||
logger.verbose(`Executing guild subcommand`);
|
||||
logger.silly(`Executing guild subcommand`);
|
||||
|
||||
return groups.guild.execute(interaction);
|
||||
return modules.guild.execute(interaction);
|
||||
}
|
||||
|
||||
logger.verbose(`No subcommand group found`);
|
||||
logger.silly(`No subcommand group found`);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -30,31 +30,31 @@ export default {
|
|||
|
||||
switch (options?.getSubcommand()) {
|
||||
case "pterodactyl":
|
||||
logger?.verbose(`Subcommand is pterodactyl`);
|
||||
logger?.silly(`Subcommand is pterodactyl`);
|
||||
|
||||
return modules.pterodactyl.execute(interaction);
|
||||
case "credits":
|
||||
logger?.verbose(`Subcommand is credits`);
|
||||
logger?.silly(`Subcommand is credits`);
|
||||
|
||||
return modules.credits.execute(interaction);
|
||||
case "points":
|
||||
logger?.verbose(`Subcommand is points`);
|
||||
logger?.silly(`Subcommand is points`);
|
||||
|
||||
return modules.points.execute(interaction);
|
||||
case "welcome":
|
||||
logger?.verbose(`Subcommand is welcome`);
|
||||
logger?.silly(`Subcommand is welcome`);
|
||||
|
||||
return modules.welcome.execute(interaction);
|
||||
case "audits":
|
||||
logger?.verbose(`Subcommand is audits`);
|
||||
logger?.silly(`Subcommand is audits`);
|
||||
|
||||
return modules.audits.execute(interaction);
|
||||
case "shop":
|
||||
logger?.verbose(`Subcommand is shop`);
|
||||
logger?.silly(`Subcommand is shop`);
|
||||
|
||||
return modules.shop.execute(interaction);
|
||||
default:
|
||||
logger?.verbose(`Subcommand is not found`);
|
||||
logger?.silly(`Subcommand is not found`);
|
||||
}
|
||||
},
|
||||
};
|
|
@ -48,7 +48,7 @@ export default {
|
|||
});
|
||||
|
||||
if (guildDB === null) {
|
||||
return logger?.verbose(`Guild not found in database.`);
|
||||
return logger?.silly(`Guild not found in database.`);
|
||||
}
|
||||
|
||||
// Modify values
|
||||
|
@ -58,7 +58,7 @@ export default {
|
|||
|
||||
// Save guild
|
||||
await guildDB?.save()?.then(async () => {
|
||||
logger?.verbose(`Guild audits updated.`);
|
||||
logger?.silly(`Guild audits updated.`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
|
@ -68,7 +68,7 @@ export default {
|
|||
});
|
||||
|
||||
if (guildDB === null) {
|
||||
return logger?.verbose(`Guild is null`);
|
||||
return logger?.silly(`Guild is null`);
|
||||
}
|
||||
|
||||
// Modify values
|
||||
|
@ -86,7 +86,7 @@ export default {
|
|||
|
||||
// Save guild
|
||||
await guildDB?.save()?.then(async () => {
|
||||
logger?.verbose(`Guild saved`);
|
||||
logger?.silly(`Guild saved`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
8
src/plugins/settings/modules/guild/modules/index.ts
Normal file
8
src/plugins/settings/modules/guild/modules/index.ts
Normal file
|
@ -0,0 +1,8 @@
|
|||
import audits from "@plugins/settings/modules/guild/modules/audits";
|
||||
import credits from "@plugins/settings/modules/guild/modules/credits";
|
||||
import points from "@plugins/settings/modules/guild/modules/points";
|
||||
import pterodactyl from "@plugins/settings/modules/guild/modules/pterodactyl";
|
||||
import shop from "@plugins/settings/modules/guild/modules/shop";
|
||||
import welcome from "@plugins/settings/modules/guild/modules/welcome";
|
||||
|
||||
export default { audits, credits, points, pterodactyl, shop, welcome };
|
|
@ -56,7 +56,7 @@ export default {
|
|||
});
|
||||
|
||||
if (guildDB === null) {
|
||||
return logger?.verbose(`Guild not found in database.`);
|
||||
return logger?.silly(`Guild not found in database.`);
|
||||
}
|
||||
|
||||
// Modify values
|
||||
|
@ -69,7 +69,7 @@ export default {
|
|||
|
||||
// Save guild
|
||||
await guildDB?.save()?.then(async () => {
|
||||
logger?.verbose(`Guild points updated.`);
|
||||
logger?.silly(`Guild points updated.`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
|
@ -53,7 +53,7 @@ export default {
|
|||
{ new: true, upsert: true }
|
||||
)
|
||||
.then(async () => {
|
||||
logger?.verbose(`Updated API credentials.`);
|
||||
logger?.silly(`Updated API credentials.`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
|
@ -48,7 +48,7 @@ export default {
|
|||
});
|
||||
|
||||
if (guildDB === null) {
|
||||
return logger?.verbose(`Guild not found in database.`);
|
||||
return logger?.silly(`Guild not found in database.`);
|
||||
}
|
||||
|
||||
// Modify values
|
||||
|
@ -61,7 +61,7 @@ export default {
|
|||
|
||||
// Save guild
|
||||
await guildDB?.save()?.then(async () => {
|
||||
logger?.verbose(`Guild shop updated.`);
|
||||
logger?.silly(`Guild shop updated.`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
|
@ -69,7 +69,7 @@ export default {
|
|||
});
|
||||
|
||||
if (guildDB === null) {
|
||||
return logger?.verbose(`Guild not found in database.`);
|
||||
return logger?.silly(`Guild not found in database.`);
|
||||
}
|
||||
|
||||
// Modify values
|
||||
|
@ -91,7 +91,7 @@ export default {
|
|||
|
||||
// Save guild
|
||||
await guildDB?.save()?.then(async () => {
|
||||
logger?.verbose(`Guild welcome updated.`);
|
||||
logger?.silly(`Guild welcome updated.`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
3
src/plugins/settings/modules/index.ts
Normal file
3
src/plugins/settings/modules/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
|||
import guild from "@plugins/settings/modules/guild";
|
||||
|
||||
export default { guild };
|
|
@ -1,3 +0,0 @@
|
|||
import roles from "./roles";
|
||||
|
||||
export default { roles };
|
|
@ -5,37 +5,33 @@ import { CommandInteraction } from "discord.js";
|
|||
// Modules
|
||||
import modules from "./modules";
|
||||
|
||||
// Groups
|
||||
import groups from "./groups";
|
||||
|
||||
// Handlers
|
||||
import logger from "../../logger";
|
||||
|
||||
// Function
|
||||
export default {
|
||||
modules,
|
||||
groups,
|
||||
|
||||
builder: new SlashCommandBuilder()
|
||||
.setName("shop")
|
||||
.setDescription("Shop for credits and custom roles.")
|
||||
.addSubcommand(modules.pterodactyl.builder)
|
||||
.addSubcommandGroup(groups.roles.builder),
|
||||
.addSubcommandGroup(modules.roles.builder),
|
||||
async execute(interaction: CommandInteraction) {
|
||||
const { options } = interaction;
|
||||
|
||||
if (options?.getSubcommand() === "pterodactyl") {
|
||||
logger.verbose(`Executing pterodactyl subcommand`);
|
||||
logger.silly(`Executing pterodactyl subcommand`);
|
||||
|
||||
return modules.pterodactyl.execute(interaction);
|
||||
}
|
||||
|
||||
if (options?.getSubcommandGroup() === "roles") {
|
||||
logger?.verbose(`Subcommand group is roles`);
|
||||
logger?.silly(`Subcommand group is roles`);
|
||||
|
||||
return groups.roles.execute(interaction);
|
||||
return modules.roles.execute(interaction);
|
||||
}
|
||||
|
||||
logger?.verbose(`No subcommand found.`);
|
||||
logger?.silly(`No subcommand found.`);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import pterodactyl from "@plugins/shop/modules/pterodactyl";
|
||||
import roles from "@plugins/shop/modules/roles";
|
||||
|
||||
export default { pterodactyl };
|
||||
export default { pterodactyl, roles };
|
||||
|
|
|
@ -37,7 +37,7 @@ export default {
|
|||
const optionAmount = options?.getInteger("amount");
|
||||
|
||||
if (optionAmount === null) {
|
||||
logger?.verbose(`Amount is null.`);
|
||||
logger?.silly(`Amount is null.`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -56,19 +56,19 @@ export default {
|
|||
}
|
||||
|
||||
if (guild === null) {
|
||||
return logger?.verbose(`Guild is null`);
|
||||
return logger?.silly(`Guild is null`);
|
||||
}
|
||||
|
||||
const userDB = await fetchUser(user, guild);
|
||||
|
||||
if (userDB === null) {
|
||||
return logger?.verbose(`User is null`);
|
||||
return logger?.silly(`User is null`);
|
||||
}
|
||||
|
||||
const dmUser = client?.users?.cache?.get(user?.id);
|
||||
|
||||
if ((optionAmount || userDB?.credits) < 100) {
|
||||
logger?.verbose(`Amount or user credits is below 100.`);
|
||||
logger?.silly(`Amount or user credits is below 100.`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -93,7 +93,7 @@ export default {
|
|||
}
|
||||
|
||||
if ((optionAmount || userDB?.credits) > 1000000) {
|
||||
logger?.verbose(`Amount or user credits is above 1.000.000.`);
|
||||
logger?.silly(`Amount or user credits is above 1.000.000.`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -119,7 +119,7 @@ export default {
|
|||
}
|
||||
|
||||
if (userDB?.credits < optionAmount) {
|
||||
logger?.verbose(`User credits is below amount.`);
|
||||
logger?.silly(`User credits is below amount.`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -168,7 +168,7 @@ export default {
|
|||
})
|
||||
|
||||
?.then(async () => {
|
||||
logger?.verbose(`Successfully created voucher.`);
|
||||
logger?.silly(`Successfully created voucher.`);
|
||||
|
||||
userDB.credits -= optionAmount || userDB?.credits;
|
||||
|
||||
|
@ -176,7 +176,7 @@ export default {
|
|||
?.save()
|
||||
|
||||
?.then(async () => {
|
||||
logger?.verbose(`Successfully saved new credits.`);
|
||||
logger?.silly(`Successfully saved new credits.`);
|
||||
|
||||
await dmUser?.send({
|
||||
embeds: [
|
||||
|
@ -218,7 +218,7 @@ export default {
|
|||
})
|
||||
|
||||
.catch(async (error) => {
|
||||
logger?.verbose(`Error saving new credits. - ${error}`);
|
||||
logger?.silly(`Error saving new credits. - ${error}`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -238,7 +238,7 @@ export default {
|
|||
})
|
||||
|
||||
.catch(async (error: any) => {
|
||||
logger?.verbose(`Error creating voucher. - ${error}`);
|
||||
logger?.silly(`Error creating voucher. - ${error}`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
|
|
@ -33,7 +33,7 @@ export default {
|
|||
if (guildDB === null) return;
|
||||
|
||||
if (!guildDB.shop.roles.status) {
|
||||
logger.verbose(`Shop roles disabled.`);
|
||||
logger.silly(`Shop roles disabled.`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -52,13 +52,13 @@ export default {
|
|||
}
|
||||
|
||||
if (options?.getSubcommand() === "buy") {
|
||||
logger.verbose(`Executing buy subcommand`);
|
||||
logger.silly(`Executing buy subcommand`);
|
||||
|
||||
await modules.buy.execute(interaction);
|
||||
}
|
||||
|
||||
if (options?.getSubcommand() === "cancel") {
|
||||
logger.verbose(`Executing cancel subcommand`);
|
||||
logger.silly(`Executing cancel subcommand`);
|
||||
|
||||
await modules.cancel.execute(interaction);
|
||||
}
|
|
@ -52,7 +52,7 @@ export default {
|
|||
|
||||
// If amount is null
|
||||
if (optionName === null) {
|
||||
logger?.verbose(`Name is null.`);
|
||||
logger?.silly(`Name is null.`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -85,15 +85,15 @@ export default {
|
|||
const userDB = await fetchUser(user, guild);
|
||||
|
||||
if (userDB === null) {
|
||||
return logger?.verbose(`User is null`);
|
||||
return logger?.silly(`User is null`);
|
||||
}
|
||||
|
||||
if (guildDB === null) {
|
||||
return logger?.verbose(`Guild is null`);
|
||||
return logger?.silly(`Guild is null`);
|
||||
}
|
||||
|
||||
if (guildDB.shop === null) {
|
||||
return logger?.verbose(`Shop is null`);
|
||||
return logger?.silly(`Shop is null`);
|
||||
}
|
||||
|
||||
const { pricePerHour } = guildDB.shop.roles;
|
||||
|
@ -112,7 +112,7 @@ export default {
|
|||
|
||||
await (member?.roles as GuildMemberRoleManager)?.add(role?.id);
|
||||
|
||||
logger?.verbose(`Role ${role?.name} was bought by ${user?.tag}`);
|
||||
logger?.silly(`Role ${role?.name} was bought by ${user?.tag}`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -139,7 +139,7 @@ export default {
|
|||
});
|
||||
})
|
||||
.catch(async (error) => {
|
||||
return logger?.verbose(`Role could not be created. ${error}`);
|
||||
return logger?.silly(`Role could not be created. ${error}`);
|
||||
});
|
||||
},
|
||||
};
|
|
@ -39,7 +39,7 @@ export default {
|
|||
const optionRole = options.getRole("role");
|
||||
|
||||
if (optionRole === null) {
|
||||
logger?.verbose(`Role is null.`);
|
||||
logger?.silly(`Role is null.`);
|
||||
|
||||
return interaction?.editReply({
|
||||
embeds: [
|
||||
|
@ -73,7 +73,7 @@ export default {
|
|||
const userDB = await fetchUser(user, guild);
|
||||
|
||||
if (userDB === null) {
|
||||
return logger?.verbose(`User is null`);
|
||||
return logger?.silly(`User is null`);
|
||||
}
|
||||
|
||||
await shopRolesSchema?.deleteOne({
|
||||
|
@ -104,7 +104,7 @@ export default {
|
|||
});
|
||||
})
|
||||
.catch(async (error) => {
|
||||
return logger?.verbose(`Role could not be deleted. ${error}`);
|
||||
return logger?.silly(`Role could not be deleted. ${error}`);
|
||||
});
|
||||
},
|
||||
};
|
|
@ -1,6 +1,5 @@
|
|||
import { successColor, footerText, footerIcon } from "@config/embed";
|
||||
|
||||
import i18next from "i18next";
|
||||
import { CommandInteraction, MessageEmbed } from "discord.js";
|
||||
import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
|
||||
|
||||
|
@ -18,32 +17,19 @@ export default {
|
|||
);
|
||||
},
|
||||
execute: async (interaction: CommandInteraction) => {
|
||||
const { locale } = interaction;
|
||||
|
||||
const userOption = interaction.options.getUser("user");
|
||||
|
||||
const targetUser = userOption || interaction.user;
|
||||
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(
|
||||
i18next.t("utility:modules:avatar:general:title", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
})
|
||||
)
|
||||
.setTitle("[:tools:] Avatar")
|
||||
.setTimestamp(new Date())
|
||||
.setFooter({ text: footerText, iconURL: footerIcon });
|
||||
|
||||
return interaction.editReply({
|
||||
embeds: [
|
||||
embed
|
||||
.setDescription(
|
||||
i18next.t("utility:modules:avatar:success01:description", {
|
||||
lng: locale,
|
||||
ns: "plugins",
|
||||
user: targetUser,
|
||||
})
|
||||
)
|
||||
.setDescription(`${targetUser.username}'s avatar:`)
|
||||
.setThumbnail(targetUser.displayAvatarURL())
|
||||
.setColor(successColor),
|
||||
],
|
||||
|
|
|
@ -64,7 +64,7 @@ export default async (client: Client) => {
|
|||
guildId,
|
||||
})
|
||||
.then(async () => {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`Shop role document ${roleId} has been deleted from user ${userId}.`
|
||||
);
|
||||
})
|
||||
|
@ -78,7 +78,7 @@ export default async (client: Client) => {
|
|||
}
|
||||
|
||||
if (new Date() > nextPayment) {
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`Shop role ${roleId} is due for payment. Withdrawing credits from user ${userId}.`
|
||||
);
|
||||
|
||||
|
@ -109,7 +109,7 @@ export default async (client: Client) => {
|
|||
await role
|
||||
.save()
|
||||
.then(async () => {
|
||||
logger.verbose(`Shop role ${roleId} has been paid for.`);
|
||||
logger.silly(`Shop role ${roleId} has been paid for.`);
|
||||
})
|
||||
.catch(async (err) => {
|
||||
logger.error(
|
||||
|
@ -118,7 +118,7 @@ export default async (client: Client) => {
|
|||
);
|
||||
});
|
||||
|
||||
logger.verbose(
|
||||
logger.silly(
|
||||
`Shop role ${roleId} has been paid for. Keeping role ${roleId} for user ${userId}.`
|
||||
);
|
||||
})
|
||||
|
|
Loading…
Add table
Reference in a new issue