🎨 changed from /groups to /modules for plugins.

This commit is contained in:
Axel Olausson Holtenäs 2022-05-20 14:42:43 +02:00
parent 7f0835813c
commit 39099ebaea
No known key found for this signature in database
GPG key ID: 7BF6826B76382CBA
76 changed files with 300 additions and 465 deletions

View file

@ -10,7 +10,7 @@ export default {
async execute(guild: Guild) { async execute(guild: Guild) {
const { client } = 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 fetchGuild(guild);
await updatePresence(client); await updatePresence(client);

View file

@ -10,7 +10,7 @@ export default {
async execute(guild: Guild) { async execute(guild: Guild) {
const { client } = 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 dropGuild(guild);
await updatePresence(client); await updatePresence(client);

View file

@ -12,7 +12,7 @@ export default {
async execute(member: GuildMember) { async execute(member: GuildMember) {
const { client, user, guild } = member; const { client, user, guild } = member;
logger?.verbose( logger?.silly(
`New member: ${user.tag} (${user.id}) added to guild: ${guild.name} (${guild.id})` `New member: ${user.tag} (${user.id}) added to guild: ${guild.name} (${guild.id})`
); );

View file

@ -12,7 +12,7 @@ export default {
async execute(member: GuildMember) { async execute(member: GuildMember) {
const { client, user, guild } = member; const { client, user, guild } = member;
logger?.verbose( logger?.silly(
`Removed member: ${user.tag} (${user.id}) from guild: ${guild.name} (${guild.id})` `Removed member: ${user.tag} (${user.id}) from guild: ${guild.name} (${guild.id})`
); );

22
src/events/index.ts Normal file
View 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);
});
};

View file

@ -4,7 +4,6 @@ import { CommandInteraction, MessageEmbed } from "discord.js";
import logger from "@logger"; import logger from "@logger";
import { errorColor, footerText, footerIcon } from "@config/embed"; import { errorColor, footerText, footerIcon } from "@config/embed";
import i18next from "i18next";
import deferReply from "@root/helpers/deferReply"; import deferReply from "@root/helpers/deferReply";
import getCommandMetadata from "@root/helpers/getCommandMetadata"; import getCommandMetadata from "@root/helpers/getCommandMetadata";
@ -31,7 +30,7 @@ export default async (interaction: CommandInteraction) => {
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
new MessageEmbed() new MessageEmbed()
.setTitle("[:toolbox:] Manage") .setTitle("[:x:] Permission")
.setDescription(`You do not have the permission to manage the bot.`) .setDescription(`You do not have the permission to manage the bot.`)
.setTimestamp(new Date()) .setTimestamp(new Date())
.setColor(errorColor) .setColor(errorColor)
@ -42,17 +41,12 @@ export default async (interaction: CommandInteraction) => {
if (metadata.guildOnly) { if (metadata.guildOnly) {
if (!guild) { if (!guild) {
logger.verbose(`Guild is null`); logger.debug(`Guild is null`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
new MessageEmbed() new MessageEmbed()
.setDescription( .setDescription("This command is only available for guild")
i18next.t("guildOnly", {
lng: interaction.locale,
ns: "errors",
})
)
.setColor(errorColor) .setColor(errorColor)
.setTimestamp(new Date()) .setTimestamp(new Date())
.setFooter({ text: footerText, iconURL: footerIcon }), .setFooter({ text: footerText, iconURL: footerIcon }),
@ -63,17 +57,12 @@ export default async (interaction: CommandInteraction) => {
if (metadata.dmOnly) { if (metadata.dmOnly) {
if (guild) { if (guild) {
logger.verbose(`Guild exist`); logger.silly(`Guild exist`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
new MessageEmbed() new MessageEmbed()
.setDescription( .setDescription("This command is only available in DM.")
i18next.t("dmOnly", {
lng: interaction.locale,
ns: "errors",
})
)
.setColor(errorColor) .setColor(errorColor)
.setTimestamp(new Date()) .setTimestamp(new Date())
.setFooter({ text: footerText, iconURL: footerIcon }), .setFooter({ text: footerText, iconURL: footerIcon }),
@ -85,7 +74,7 @@ export default async (interaction: CommandInteraction) => {
await currentCommand await currentCommand
.execute(interaction) .execute(interaction)
.then(async () => { .then(async () => {
return logger?.verbose( return logger?.silly(
`Command: ${commandName} executed in guild: ${guild?.name} (${guild?.id}) by user: ${user?.tag} (${user?.id})` `Command: ${commandName} executed in guild: ${guild?.name} (${guild?.id}) by user: ${user?.tag} (${user?.id})`
); );
}) })

View file

@ -10,7 +10,7 @@ export default {
async execute(interaction: CommandInteraction) { async execute(interaction: CommandInteraction) {
const { guild, id } = interaction; const { guild, id } = interaction;
logger?.verbose( logger?.silly(
`New interaction: ${id} in guild: ${guild?.name} (${guild?.id})` `New interaction: ${id} in guild: ${guild?.name} (${guild?.id})`
); );

View file

@ -23,7 +23,7 @@ export default {
}); });
if (counter === null) { if (counter === null) {
logger.verbose( logger.silly(
`No counter found for guild ${guildId} and channel ${channelId}` `No counter found for guild ${guildId} and channel ${channelId}`
); );
return; return;
@ -33,7 +33,7 @@ export default {
lastMessage?.author.id === author.id && lastMessage?.author.id === author.id &&
channel.id === counter.channelId channel.id === counter.channelId
) { ) {
logger.verbose( logger.silly(
`${author.username} sent the last message therefor not allowing again.` `${author.username} sent the last message therefor not allowing again.`
); );
await message.delete(); await message.delete();
@ -41,7 +41,7 @@ export default {
} }
if (content !== counter.word) { if (content !== counter.word) {
logger.verbose( logger.silly(
`Counter word ${counter.word} does not match message ${content}` `Counter word ${counter.word} does not match message ${content}`
); );
@ -53,7 +53,7 @@ export default {
await counter await counter
.save() .save()
.then(async () => { .then(async () => {
logger.verbose( logger.silly(
`Counter for guild ${guildId} and channel ${channelId} is now ${counter.counter}` `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})` `Counter word ${counter.word} was found in message ${content} from ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})`
); );
}, },

View file

@ -30,7 +30,7 @@ export default {
const timeout = await timeouts.findOne(timeoutData); const timeout = await timeouts.findOne(timeoutData);
if (timeout) { if (timeout) {
logger.verbose( logger.silly(
`User ${userId} in guild ${guildId} is on timeout 2022-04-14-13-51-00` `User ${userId} in guild ${guildId} is on timeout 2022-04-14-13-51-00`
); );
return; return;
@ -41,7 +41,7 @@ export default {
await userData await userData
.save() .save()
.then(async () => { .then(async () => {
logger.verbose( logger.silly(
`User ${userId} in guild ${guildId} has ${userData.credits} credits` `User ${userId} in guild ${guildId} has ${userData.credits} credits`
); );
}) })
@ -55,7 +55,7 @@ export default {
await timeouts await timeouts
.create(timeoutData) .create(timeoutData)
.then(async () => { .then(async () => {
logger.verbose( logger.silly(
`Timeout 2022-04-14-13-51-00 for user ${userId} in guild ${guildId} has been created` `Timeout 2022-04-14-13-51-00 for user ${userId} in guild ${guildId} has been created`
); );
}) })
@ -70,7 +70,7 @@ export default {
await timeouts await timeouts
.deleteOne(timeoutData) .deleteOne(timeoutData)
.then(async () => { .then(async () => {
logger.verbose( logger.silly(
`Timeout 2022-04-14-13-51-00 for user ${userId} in guild ${guildId} has been deleted` `Timeout 2022-04-14-13-51-00 for user ${userId} in guild ${guildId} has been deleted`
); );
}) })

View file

@ -30,7 +30,7 @@ export default {
const timeout = await timeouts.findOne(timeoutData); const timeout = await timeouts.findOne(timeoutData);
if (timeout) { 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` `User ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id} is on timeout 2022-04-14-14-15-00`
); );
return; return;
@ -41,7 +41,7 @@ export default {
await userData await userData
.save() .save()
.then(async () => { .then(async () => {
logger.verbose( logger.silly(
`Successfully saved user ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})` `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` `User ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id}) has ${userData.points} points`
); );
await timeouts await timeouts
.create(timeoutData) .create(timeoutData)
.then(async () => { .then(async () => {
logger.verbose( logger.silly(
`Successfully created timeout for user ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})` `Successfully created timeout for user ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})`
); );
}) })
@ -74,7 +74,7 @@ export default {
await timeouts await timeouts
.deleteOne(timeoutData) .deleteOne(timeoutData)
.then(async () => { .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})` `Successfully deleted timeout 2022-04-14-14-15-00 for user ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})`
); );
}) })

View file

@ -14,7 +14,7 @@ export default async (message: Message) => {
}); });
if (counter === null) if (counter === null)
return logger?.verbose( return logger?.silly(
`No counter found for guild: ${guild?.name} (${guild?.id})` `No counter found for guild: ${guild?.name} (${guild?.id})`
); );
const { word } = counter; const { word } = counter;
@ -29,8 +29,8 @@ export default async (message: Message) => {
if (lastMessage.author.id === message.author.id) return; if (lastMessage.author.id === message.author.id) return;
channel?.send(`${author} said **${word}**.`); channel?.send(`${author} said **${word}**.`);
logger?.verbose(`${author} said ${word} in ${channel}`); logger?.silly(`${author} said ${word} in ${channel}`);
return logger?.verbose( return logger?.silly(
`User: ${author?.tag} (${author?.id}) in guild: ${guild?.name} (${guild?.id}) said the counter word: ${word}` `User: ${author?.tag} (${author?.id}) in guild: ${guild?.name} (${guild?.id}) said the counter word: ${word}`
); );
}; };

View file

@ -13,12 +13,11 @@ export default {
await audits.execute(oldMessage, newMessage); await audits.execute(oldMessage, newMessage);
logger?.verbose( logger?.silly(
`Message update event fired by ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})` `Message update event fired by ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})`
); );
if (author?.bot) if (author?.bot) return logger?.silly(`Message update event fired by bot`);
return logger?.verbose(`Message update event fired by bot`);
await counter(newMessage); await counter(newMessage);
}, },

View file

@ -14,12 +14,12 @@ export default async (message: Message) => {
}); });
if (counter === null) if (counter === null)
return logger?.verbose( return logger?.silly(
`No counter found for guild: ${guild?.name} (${guild?.id})` `No counter found for guild: ${guild?.name} (${guild?.id})`
); );
const { word } = counter; const { word } = counter;
if (content === word) 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}` `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() ?.delete()
?.then(async () => { ?.then(async () => {
await channel?.send(`${author} said **${word}**.`); await channel?.send(`${author} said **${word}**.`);
logger?.verbose(`${author} said ${word} in ${channel}`); logger?.silly(`${author} said ${word} in ${channel}`);
}) })
?.catch(async (error: any) => { ?.catch(async (error: any) => {
logger?.error(error); logger?.error(error);

View file

@ -10,14 +10,14 @@ import devMode from "@handlers/devMode";
export default { export default {
once: true, once: true,
async execute(client: Client) { async execute(client: Client) {
logger.info(`${client.user?.tag} (${client.user?.id}) is ready`); logger.info("Ready!");
await updatePresence(client); await updatePresence(client);
await devMode(client); await devMode(client);
await deployCommands(client); await deployCommands(client);
client.guilds?.cache.forEach((guild) => { 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}` `${client.user?.tag} (${client.user?.id}) is in guild: ${guild.name} (${guild.id}) with member count of ${guild.memberCount}`
); );
}); });

View file

@ -12,7 +12,7 @@ export default async (client: Client) => {
} }
await Promise.all( await Promise.all(
plugins.map(async (pluginName) => { plugins.map(async (pluginName, index) => {
const plugin = await import(`../plugins/${pluginName}`); const plugin = await import(`../plugins/${pluginName}`);
await client.commands.set( await client.commands.set(
@ -20,10 +20,14 @@ export default async (client: Client) => {
plugin.default, plugin.default,
plugin.default.metadata plugin.default.metadata
); );
logger.verbose(
`Loaded plugin ${index + 1}/${plugins.length}: ${pluginName}`
);
}) })
) )
.then(async () => { .then(async () => {
logger.debug("Successfully loaded plugins."); logger.info(`Started all ${plugins.length} plugins.`);
}) })
.catch(async (err) => { .catch(async (err) => {
logger.error(`${err}`); logger.error(`${err}`);

View file

@ -14,12 +14,12 @@ export default async (client: Client) => {
client.commands.map(async (pluginData: any) => { client.commands.map(async (pluginData: any) => {
pluginList.push(pluginData.builder.toJSON()); pluginList.push(pluginData.builder.toJSON());
logger.verbose( logger.verbose(
`${pluginData.builder.name} successfully pushed to plugin list.` `Plugin is ready for deployment: ${pluginData.builder.name}`
); );
}) })
) )
.then(async () => { .then(async () => {
logger.debug("Successfully pushed all plugins to plugin list."); logger.info("All plugins are ready to be deployed.");
}) })
.catch(async (error) => { .catch(async (error) => {
logger.error(`${error}`); logger.error(`${error}`);
@ -32,7 +32,7 @@ export default async (client: Client) => {
body: pluginList, body: pluginList,
}) })
.then(async () => { .then(async () => {
logger.debug(`Successfully deployed plugins to Discord`); logger.info(`Successfully deployed plugins to Discord's API`);
}) })
.catch(async (error) => { .catch(async (error) => {
logger.error(`${error}`); logger.error(`${error}`);
@ -44,7 +44,7 @@ export default async (client: Client) => {
body: pluginList, body: pluginList,
}) })
.then(async () => .then(async () =>
logger.debug(`Successfully deployed guild plugins to Discord`) logger.info(`Successfully deployed guild plugins to Discord's API`)
) )
.catch(async (error) => { .catch(async (error) => {
logger.error(`${error}`); logger.error(`${error}`);

View file

@ -9,11 +9,9 @@ import { devMode, guildId } from "@config/other";
export default async (client: Client) => { export default async (client: Client) => {
if (!devMode) { if (!devMode) {
return client?.application?.commands?.set([], guildId).then(async () => { return client?.application?.commands?.set([], guildId).then(async () => {
return logger.debug( return logger.verbose(`Development mode is disabled.`);
`Development commands disabled for guild: ${guildId}`
);
}); });
} }
return logger.debug(`Development commands enabled for guild: ${guildId}`); return logger.info(`Development mode is enabled.`);
}; };

View file

@ -9,10 +9,12 @@ export default async (client: Client) => {
} }
await Promise.all( await Promise.all(
events.map(async (eventName) => { events.map(async (eventName, index) => {
const event = await import(`../events/${eventName}`); const event = await import(`../events/${eventName}`);
logger.verbose(`Loaded event: ${eventName}`); logger.verbose(
`Loaded event ${index + 1}/${events.length}: ${eventName}`
);
if (event.once) { if (event.once) {
return client.once(eventName, async (...args) => return client.once(eventName, async (...args) =>
@ -26,10 +28,10 @@ export default async (client: Client) => {
}) })
) )
.then(async () => { .then(async () => {
logger.debug("Successfully loaded events."); logger.info(`Started all ${events.length} events.`);
}) })
.catch(async (err) => { .catch(async (err) => {
logger.error(err); logger.error(`${err}`);
}); });
}); });
}; };

View file

@ -13,7 +13,7 @@ export default async (guild: Guild) => {
await guildSchema await guildSchema
.deleteMany({ guildId: guild.id }) .deleteMany({ guildId: guild.id })
.then(async () => { .then(async () => {
return logger?.verbose(`Deleted guild: ${guild.id}`); return logger?.silly(`Deleted guild: ${guild.id}`);
}) })
.catch(async (error) => { .catch(async (error) => {
logger?.error(`Error deleting guild: ${guild.id} - ${error}`); logger?.error(`Error deleting guild: ${guild.id} - ${error}`);
@ -22,7 +22,7 @@ export default async (guild: Guild) => {
await userSchema await userSchema
.deleteMany({ guildId: guild.id }) .deleteMany({ guildId: guild.id })
.then(async () => { .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) => { .catch(async (error) => {
logger?.error(`Error deleting users for guild: ${guild.id} - ${error}`); logger?.error(`Error deleting users for guild: ${guild.id} - ${error}`);
@ -31,7 +31,7 @@ export default async (guild: Guild) => {
await apiSchema await apiSchema
.deleteMany({ guildId: guild.id }) .deleteMany({ guildId: guild.id })
.then(async () => { .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) => { .catch(async (error) => {
logger?.error(`Error deleting apis for guild: ${guild.id} - ${error}`); logger?.error(`Error deleting apis for guild: ${guild.id} - ${error}`);
@ -40,7 +40,7 @@ export default async (guild: Guild) => {
await counterSchema await counterSchema
.deleteMany({ guildId: guild.id }) .deleteMany({ guildId: guild.id })
.then(async () => { .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) => { .catch(async (error) => {
logger?.error( logger?.error(
@ -51,9 +51,7 @@ export default async (guild: Guild) => {
await shopRoleSchema await shopRoleSchema
.deleteMany({ guildId: guild.id }) .deleteMany({ guildId: guild.id })
.then(async () => { .then(async () => {
logger?.verbose( logger?.silly(`Deleted shop roles for guild: ${guild.id} from database`);
`Deleted shop roles for guild: ${guild.id} from database`
);
}) })
.catch(async (error) => { .catch(async (error) => {
logger?.error( logger?.error(
@ -64,7 +62,7 @@ export default async (guild: Guild) => {
await timeoutSchema await timeoutSchema
.deleteMany({ guildId: guild.id }) .deleteMany({ guildId: guild.id })
.then(async () => { .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) => { .catch(async (error) => {
logger?.error( logger?.error(

View file

@ -8,7 +8,7 @@ export default async (user: User, guild: Guild) => {
await userSchema await userSchema
.deleteOne({ userId: user.id, guildId: guild.id }) .deleteOne({ userId: user.id, guildId: guild.id })
.then(async () => { .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) => { .catch(async (error) => {
logger?.error( logger?.error(

View file

@ -16,7 +16,7 @@ export default async (guild: Guild) => {
await newGuildObj await newGuildObj
.save() .save()
.then(async () => { .then(async () => {
logger?.verbose(`Created guild: ${guild.id}`); logger?.silly(`Created guild: ${guild.id}`);
}) })
.catch(async (error) => { .catch(async (error) => {
logger?.error(`Error creating guild: ${guild.id} - ${error}`); logger?.error(`Error creating guild: ${guild.id} - ${error}`);

View file

@ -22,7 +22,7 @@ export default async (user: User, guild: Guild) => {
await newUserObj await newUserObj
.save() .save()
.then(async () => { .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) => { .catch(async (error) => {
logger?.error( logger?.error(

View file

@ -8,5 +8,5 @@ export default async (interaction: CommandInteraction, currentCommand: any) => {
return currentCommand.modules[subcommand].metadata; return currentCommand.modules[subcommand].metadata;
} }
return currentCommand.groups[subcommandGroup].modules[subcommand].metadata; return currentCommand.modules[subcommandGroup].modules[subcommand].metadata;
}; };

View file

@ -2,6 +2,6 @@ import logger from "@root/logger";
export default (count: number, noun: string, suffix?: string) => { export default (count: number, noun: string, suffix?: string) => {
const result = `${count} ${noun}${count !== 1 ? suffix || "s" : ""}`; const result = `${count} ${noun}${count !== 1 ? suffix || "s" : ""}`;
logger?.verbose(`Pluralized ${count} to ${result}`); logger?.silly(`Pluralized ${count} to ${result}`);
return result; return result;
}; };

View file

@ -23,7 +23,7 @@ export default async function saveUser(data: any, data2: any) {
50 50
)}\n${`${_}\n${"=".repeat(50)}`}` )}\n${`${_}\n${"=".repeat(50)}`}`
) )
: logger?.verbose(`Saved user: ${data.id} (saveUser)`) : logger?.silly(`Saved user: ${data.id} (saveUser)`)
); );
if (data2) { if (data2) {
data2.save((_: any) => data2.save((_: any) =>
@ -33,7 +33,7 @@ export default async function saveUser(data: any, data2: any) {
50 50
)}\n${`${_}\n${"=".repeat(50)}`}` )}\n${`${_}\n${"=".repeat(50)}`}`
) )
: logger?.verbose(`Saved user: ${data2.id} (saveUser)`) : logger?.silly(`Saved user: ${data2.id} (saveUser)`)
); );
} }
}, },

View file

@ -3,6 +3,6 @@ import logger from "@logger";
export default function sleep(milliseconds: any) { export default function sleep(milliseconds: any) {
return new Promise((resolve) => { return new Promise((resolve) => {
setTimeout(resolve, milliseconds); setTimeout(resolve, milliseconds);
logger?.verbose(`Sleeping for ${milliseconds} milliseconds`); logger?.silly(`Sleeping for ${milliseconds} milliseconds`);
}); });
} }

View file

@ -10,5 +10,5 @@ export default async (client: Client) => {
activities: [{ type: "WATCHING", name: status }], activities: [{ type: "WATCHING", name: status }],
status: "online", status: "online",
}); });
logger?.verbose(`Updated client presence to: ${status}`); logger?.debug(`Updated client presence to: ${status}`);
}; };

View file

@ -4,7 +4,7 @@ import { token, intents } from "@config/discord";
import { Client } from "discord.js"; // discord.js import { Client } from "discord.js"; // discord.js
import database from "@database"; import database from "@root/events";
import schedules from "@schedules"; import schedules from "@schedules";
import events from "@handlers/events"; import events from "@handlers/events";
import commands from "@handlers/commands"; import commands from "@handlers/commands";

View file

@ -17,10 +17,10 @@ export default {
const { options } = interaction; const { options } = interaction;
if (options.getSubcommand() === "view") { if (options.getSubcommand() === "view") {
logger.verbose(`Executing view subcommand`); logger.silly(`Executing view subcommand`);
return modules.view.execute(interaction); return modules.view.execute(interaction);
} }
logger.verbose(`Unknown subcommand ${options.getSubcommand()}`); logger.silly(`Unknown subcommand ${options.getSubcommand()}`);
}, },
}; };

View file

@ -33,7 +33,7 @@ export default {
await modules.work.execute(interaction); await modules.work.execute(interaction);
break; break;
default: default:
logger.verbose(`Unknown subcommand ${options.getSubcommand()}`); logger.silly(`Unknown subcommand ${options.getSubcommand()}`);
} }
}, },
}; };

View file

@ -5,7 +5,6 @@ import {
footerIcon, footerIcon,
} from "@config/embed"; } from "@config/embed";
import i18next from "i18next";
import { CommandInteraction, MessageEmbed } from "discord.js"; import { CommandInteraction, MessageEmbed } from "discord.js";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders"; import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
import logger from "@logger"; import logger from "@logger";
@ -25,33 +24,21 @@ export default {
); );
}, },
execute: async (interaction: CommandInteraction) => { execute: async (interaction: CommandInteraction) => {
const { options, user, guild, locale } = interaction; const { options, user, guild } = interaction;
const discordUser = options.getUser("user"); const discordUser = options.getUser("user");
const embed = new MessageEmbed() const embed = new MessageEmbed()
.setTitle( .setTitle("[:dollar:] Balance")
i18next.t("credits:modules:balance:general:title", {
lng: locale,
ns: "plugins",
})
)
.setTimestamp(new Date()) .setTimestamp(new Date())
.setFooter({ text: footerText, iconURL: footerIcon }); .setFooter({ text: footerText, iconURL: footerIcon });
if (guild === null) { if (guild === null) {
logger.verbose(`Guild is null`); logger.silly(`Guild is null`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed.setDescription("Guild is not found").setColor(errorColor),
.setDescription(
i18next.t("guildOnly", {
lng: locale,
ns: "errors",
})
)
.setColor(errorColor),
], ],
}); });
} }
@ -59,17 +46,13 @@ export default {
const userObj = await fetchUser(discordUser || user, guild); const userObj = await fetchUser(discordUser || user, guild);
if (userObj === null) { if (userObj === null) {
logger.verbose(`User not found`); logger.silly(`User not found`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("userNotFound", { "User is not found. Please try again with a valid user."
lng: locale,
ns: "errors",
user: discordUser || user,
})
) )
.setColor(errorColor), .setColor(errorColor),
], ],
@ -77,35 +60,22 @@ export default {
} }
if (userObj.credits === null) { if (userObj.credits === null) {
logger.verbose(`User has no credits`); logger.silly(`User has no credits`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed.setDescription("Credits not found").setColor(errorColor),
.setDescription(
i18next.t("credits:modules:balance:error01:description", {
lng: locale,
ns: "plugins",
user: discordUser || user,
})
)
.setColor(errorColor),
], ],
}); });
} }
logger.verbose(`Found user ${discordUser || user}`); logger.silly(`Found user ${discordUser || user}`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("credits:modules:balance:success01:description", { `${discordUser || user} currently has ${userObj.credits} credits.`
lng: locale,
ns: "plugins",
user: discordUser || user,
amount: userObj.credits,
})
) )
.setColor(successColor), .setColor(successColor),
], ],

View file

@ -18,7 +18,6 @@ import saveUser from "@helpers/saveUser";
// Models // Models
import fetchUser from "@helpers/fetchUser"; import fetchUser from "@helpers/fetchUser";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders"; import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
import i18next from "i18next";
// Function // Function
export default { export default {
@ -52,44 +51,27 @@ export default {
const optionReason = options.getString("reason"); const optionReason = options.getString("reason");
const embed = new MessageEmbed() const embed = new MessageEmbed()
.setTitle( .setTitle("[:dollar:] Gift")
i18next.t("credits:modules:gift:general:title", {
lng: locale,
ns: "plugins",
})
)
.setTimestamp(new Date()) .setTimestamp(new Date())
.setFooter({ text: footerText, iconURL: footerIcon }); .setFooter({ text: footerText, iconURL: footerIcon });
if (guild === null) { if (guild === null) {
logger.verbose(`Guild is null`); logger.silly(`Guild is null`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed.setDescription("Guild is not found").setColor(errorColor),
.setDescription(
i18next.t("guildOnly", {
lng: locale,
ns: "errors",
})
)
.setColor(errorColor),
], ],
}); });
} }
if (optionUser === null) { if (optionUser === null) {
logger.verbose(`User not found`); logger.silly(`User not found`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(`User is not found in this guild`)
i18next.t("userNotFound", {
lng: locale,
ns: "errors",
})
)
.setColor(errorColor), .setColor(errorColor),
], ],
}); });
@ -102,16 +84,13 @@ export default {
const toUserDB = await fetchUser(optionUser, guild); const toUserDB = await fetchUser(optionUser, guild);
if (fromUserDB === null) { if (fromUserDB === null) {
logger.verbose(`User not found`); logger.silly(`User not found`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("userNotFound", { "You do not have any credits. Please write something in the chat to get some."
lng: locale,
ns: "errors",
})
) )
.setColor(errorColor), .setColor(errorColor),
], ],
@ -119,16 +98,13 @@ export default {
} }
if (toUserDB === null) { if (toUserDB === null) {
logger.verbose(`User not found`); logger.silly(`User not found`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("userNotFound", { "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."
lng: locale,
ns: "errors",
})
) )
.setColor(errorColor), .setColor(errorColor),
], ],
@ -137,16 +113,13 @@ export default {
// If receiver is same as sender // If receiver is same as sender
if (optionUser.id === user.id) { if (optionUser.id === user.id) {
logger.verbose(`User is same as sender`); logger.silly(`User is same as sender`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("credits:modules:gift:error01:description", { "You can't gift credits to yourself. Please choose a different user."
lng: locale,
ns: "plugins",
})
) )
.setColor(errorColor), .setColor(errorColor),
], ],
@ -155,16 +128,13 @@ export default {
// If amount is null // If amount is null
if (optionAmount === null) { if (optionAmount === null) {
logger.verbose(`Amount is null`); logger.silly(`Amount is null`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("amountNotFound", { "Please specify the amount of credits you want to gift."
lng: locale,
ns: "errors",
})
) )
.setColor(errorColor), .setColor(errorColor),
], ],
@ -173,16 +143,13 @@ export default {
// If amount is zero or below // If amount is zero or below
if (optionAmount <= 0) { if (optionAmount <= 0) {
logger.verbose(`Amount is zero or below`); logger.silly(`Amount is zero or below`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("credits:modules:gift:error02:description", { "Please specify a valid amount of credits you want to gift."
lng: locale,
ns: "plugins",
})
) )
.setColor(errorColor), .setColor(errorColor),
], ],
@ -191,17 +158,13 @@ export default {
// If user has below gifting amount // If user has below gifting amount
if (fromUserDB.credits < optionAmount) { if (fromUserDB.credits < optionAmount) {
logger.verbose(`User has below gifting amount`); logger.silly(`User has below gifting amount`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("credits:modules:gift:error03:description", { "You don't have enough credits to gift that amount. Please try again with a lower amount."
lng: locale,
ns: "plugins",
amount: fromUserDB.credits,
})
) )
.setColor(errorColor), .setColor(errorColor),
], ],
@ -210,28 +173,19 @@ export default {
// If toUserDB has no credits // If toUserDB has no credits
if (toUserDB === null) { if (toUserDB === null) {
logger.verbose(`User has no credits`); logger.silly(`User has no credits`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("userNotFound", { "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."
lng: locale,
ns: "errors",
})
) )
.setColor(errorColor), .setColor(errorColor),
], ],
}); });
} }
// Withdraw amount from fromUserDB
fromUserDB.credits -= optionAmount;
// Deposit amount to toUserDB
toUserDB.credits += optionAmount;
// Save users // Save users
await saveUser(fromUserDB, toUserDB).then(async () => { await saveUser(fromUserDB, toUserDB).then(async () => {
// Get DM user object // Get DM user object
@ -245,13 +199,11 @@ export default {
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("credits:modules:gift:error03:description", { `${
lng: locale, user.tag
ns: "plugins", } has gifted you ${optionAmount} credits with reason: ${
user: user.tag, optionReason || "unspecified"
amount: optionAmount, }`
reason: optionReason || "unspecified",
})
) )
.setColor(successColor), .setColor(successColor),
], ],
@ -260,7 +212,7 @@ export default {
logger.error(`[Gift] Error sending DM to user: ${error}`) logger.error(`[Gift] Error sending DM to user: ${error}`)
); );
logger.verbose( logger.silly(
`[Gift] Successfully gifted ${optionAmount} credits to ${optionUser.tag}` `[Gift] Successfully gifted ${optionAmount} credits to ${optionUser.tag}`
); );
@ -268,13 +220,9 @@ export default {
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("credits:modules:gift:success02:description", { `Successfully gifted ${optionAmount} credits to ${
lng: locale, optionUser.tag
ns: "plugins", } with reason: ${optionReason || "unspecified"}`
user: user,
amount: optionAmount,
reason: optionReason || "unspecified",
})
) )
.setColor(successColor), .setColor(successColor),
], ],

View file

@ -5,7 +5,6 @@ import {
footerIcon, footerIcon,
} from "@config/embed"; } from "@config/embed";
import i18next from "i18next";
import { CommandInteraction, MessageEmbed } from "discord.js"; import { CommandInteraction, MessageEmbed } from "discord.js";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders"; import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
import logger from "@logger"; import logger from "@logger";
@ -19,29 +18,21 @@ export default {
return command.setName("top").setDescription(`View the top users`); return command.setName("top").setDescription(`View the top users`);
}, },
execute: async (interaction: CommandInteraction) => { execute: async (interaction: CommandInteraction) => {
const { locale, guild } = interaction; const { guild } = interaction;
const embed = new MessageEmbed() const embed = new MessageEmbed()
.setTitle( .setTitle("[:dollar:] Top")
i18next.t("credits:modules:top:general:title", {
lng: locale,
ns: "plugins",
})
)
.setTimestamp(new Date()) .setTimestamp(new Date())
.setFooter({ text: footerText, iconURL: footerIcon }); .setFooter({ text: footerText, iconURL: footerIcon });
if (guild === null) { if (guild === null) {
logger.verbose(`Guild is null`); logger.silly(`Guild is null`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("guildOnly", { "Guild is not found. Please try again with a valid guild."
lng: locale,
ns: "errors",
})
) )
.setColor(errorColor), .setColor(errorColor),
], ],
@ -60,22 +51,13 @@ export default {
// Create entry object // Create entry object
const entry = (x: IUser, index: number) => const entry = (x: IUser, index: number) =>
i18next.t("credits:modules:top:entry", { `${index + 1}. <@${x.userId}> - ${x.credits} credits`;
lng: locale,
ns: "plugins",
index: index + 1,
user: x.userId,
amount: x.credits,
});
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
` ${i18next.t("credits:modules:top:success01:description", { `Below are the top 10 users in this guild.
lng: locale,
ns: "plugins",
})}
${topTen.map(entry).join("\n")} ${topTen.map(entry).join("\n")}
` `

View file

@ -20,7 +20,6 @@ import timeoutSchema from "@schemas/timeout";
// Helpers // Helpers
import fetchUser from "@helpers/fetchUser"; import fetchUser from "@helpers/fetchUser";
import fetchGuild from "@helpers/fetchGuild"; import fetchGuild from "@helpers/fetchGuild";
import i18next from "i18next";
export default { export default {
metadata: { guildOnly: true, ephemeral: true }, metadata: { guildOnly: true, ephemeral: true },
@ -30,15 +29,10 @@ export default {
}, },
execute: async (interaction: CommandInteraction) => { execute: async (interaction: CommandInteraction) => {
// Destructure member // Destructure member
const { guild, user, locale } = interaction; const { guild, user } = interaction;
const embed = new MessageEmbed() const embed = new MessageEmbed()
.setTitle( .setTitle("[:dollar:] Work")
i18next.t("credits:modules:work:general:title", {
lng: locale,
ns: "plugins",
})
)
.setTimestamp(new Date()) .setTimestamp(new Date())
.setFooter({ .setFooter({
text: footerText, text: footerText,
@ -56,24 +50,20 @@ export default {
}); });
if (guild === null) { if (guild === null) {
return logger?.verbose(`Guild is null`); return logger?.silly(`Guild is null`);
} }
const guildDB = await fetchGuild(guild); const guildDB = await fetchGuild(guild);
// If user is not on timeout // If user is not on timeout
if (isTimeout) { if (isTimeout) {
logger?.verbose(`User ${user?.id} is on timeout`); logger?.silly(`User ${user?.id} is on timeout`);
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t("credits:modules:work:error01:description", { `You are on timeout, please wait ${guildDB?.credits.workTimeout} seconds.`
lng: locale,
ns: "plugins",
time: guildDB?.credits.workTimeout,
})
) )
.setColor(errorColor), .setColor(errorColor),
], ],
@ -88,27 +78,20 @@ export default {
const userDB = await fetchUser(user, guild); const userDB = await fetchUser(user, guild);
if (userDB === null) { if (userDB === null) {
return logger?.verbose(`User not found`); return logger?.silly(`User not found`);
} }
userDB.credits += creditsEarned; userDB.credits += creditsEarned;
await userDB?.save()?.then(async () => { await userDB?.save()?.then(async () => {
logger?.verbose( logger?.silly(
`User ${userDB?.userId} worked and earned ${creditsEarned} credits` `User ${userDB?.userId} worked and earned ${creditsEarned} credits`
); );
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(`You worked and earned ${creditsEarned} credits.`)
i18next.t("credits:modules:work:success01:description", {
lng: locale,
ns: "plugins",
time: guildDB?.credits.workTimeout,
amount: creditsEarned,
})
)
.setColor(successColor), .setColor(successColor),
], ],
}); });
@ -122,7 +105,7 @@ export default {
}); });
setTimeout(async () => { 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 // When timeout is out, remove it from the database
await timeoutSchema?.deleteOne({ await timeoutSchema?.deleteOne({

View file

@ -21,7 +21,7 @@ export default {
await modules.meme.execute(interaction); await modules.meme.execute(interaction);
break; break;
default: default:
logger.verbose(`Unknown subcommand ${options.getSubcommand()}`); logger.silly(`Unknown subcommand ${options.getSubcommand()}`);
} }
}, },
}; };

View file

@ -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 };

View file

@ -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 };

View file

@ -1,4 +0,0 @@
import counters from "@plugins/manage/groups/counters";
import credits from "@plugins/manage/groups/credits";
export default { counters, credits };

View file

@ -3,35 +3,35 @@ import { SlashCommandBuilder } from "@discordjs/builders";
import { CommandInteraction } from "discord.js"; import { CommandInteraction } from "discord.js";
// Groups // Groups
import groups from "@plugins/manage/groups"; import modules from "@plugins/manage/modules";
import logger from "@logger"; import logger from "@logger";
// Function // Function
export default { export default {
groups, modules,
builder: new SlashCommandBuilder() builder: new SlashCommandBuilder()
.setName("manage") .setName("manage")
.setDescription("Manage the bot.") .setDescription("Manage the bot.")
.addSubcommandGroup(groups.counters.builder) .addSubcommandGroup(modules.counters.builder)
.addSubcommandGroup(groups.credits.builder), .addSubcommandGroup(modules.credits.builder),
async execute(interaction: CommandInteraction) { async execute(interaction: CommandInteraction) {
// Destructure // Destructure
const { options } = interaction; const { options } = interaction;
if (options?.getSubcommandGroup() === "credits") { 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") { 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`);
}, },
}; };

View file

@ -23,17 +23,17 @@ export default {
const { options } = interaction; const { options } = interaction;
if (options?.getSubcommand() === "add") { if (options?.getSubcommand() === "add") {
logger?.verbose(`Executing create subcommand`); logger?.silly(`Executing create subcommand`);
return modules.add.execute(interaction); return modules.add.execute(interaction);
} }
if (options?.getSubcommand() === "remove") { if (options?.getSubcommand() === "remove") {
logger?.verbose(`Executing delete subcommand`); logger?.silly(`Executing delete subcommand`);
return modules.remove.execute(interaction); return modules.remove.execute(interaction);
} }
logger?.verbose(`Unknown subcommand ${options?.getSubcommand()}`); logger?.silly(`Unknown subcommand ${options?.getSubcommand()}`);
}, },
}; };

View file

@ -16,7 +16,6 @@ import logger from "@logger";
// Models // Models
import counterSchema from "@schemas/counter"; import counterSchema from "@schemas/counter";
import i18next from "i18next";
// Function // Function
export default { export default {
@ -57,12 +56,7 @@ export default {
const startValue = options?.getNumber("start"); const startValue = options?.getNumber("start");
const embed = new MessageEmbed() const embed = new MessageEmbed()
.setTitle( .setTitle("[:toolbox:] Counters - Add")
i18next.t("manage:groups:counters:modules:add:general:title", {
lng: locale,
ns: "plugins",
})
)
.setTimestamp(new Date()) .setTimestamp(new Date())
.setFooter({ text: footerText, iconURL: footerIcon }); .setFooter({ text: footerText, iconURL: footerIcon });
@ -75,16 +69,7 @@ export default {
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(`A counter already exists for this channel.`)
i18next.t(
"manage:groups:counters:modules:add:error01:description",
{
lng: locale,
ns: "plugins",
channel: discordChannel,
}
)
)
.setColor(errorColor), .setColor(errorColor),
], ],
}); });
@ -98,20 +83,13 @@ export default {
counter: startValue || 0, counter: startValue || 0,
}) })
.then(async () => { .then(async () => {
logger?.verbose(`Created counter`); logger?.silly(`Created counter`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t( `Successfully created counter for ${discordChannel?.name}.`
"manage:groups:counters:modules:create:success01:description",
{
lng: locale,
ns: "plugins",
channel: discordChannel,
}
)
) )
.setColor(successColor), .setColor(successColor),
], ],

View 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 };

View file

@ -16,7 +16,6 @@ import logger from "@logger";
import counterSchema from "@schemas/counter"; import counterSchema from "@schemas/counter";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders"; import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
import { ChannelType } from "discord-api-types/v10"; import { ChannelType } from "discord-api-types/v10";
import i18next from "i18next";
// Function // Function
export default { export default {
@ -44,12 +43,7 @@ export default {
const discordChannel = options?.getChannel("channel"); const discordChannel = options?.getChannel("channel");
const embed = new MessageEmbed() const embed = new MessageEmbed()
.setTitle( .setTitle("[:toolbox:] Counters - Remove")
i18next.t("manage:groups:counters:modules:remove:general:title", {
lng: locale,
ns: "plugins",
})
)
.setTimestamp(new Date()) .setTimestamp(new Date())
.setFooter({ text: footerText, iconURL: footerIcon }); .setFooter({ text: footerText, iconURL: footerIcon });
@ -59,19 +53,13 @@ export default {
}); });
if (counter === null) { if (counter === null) {
logger?.verbose(`Counter is null`); logger?.silly(`Counter is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t( ":x: There is no counter in this channel. Please add a counter first."
"manage:groups:counters:modules:remove:error01:description",
{
lng: locale,
ns: "plugins",
}
)
) )
.setColor(errorColor), .setColor(errorColor),
], ],
@ -84,19 +72,13 @@ export default {
channelId: discordChannel?.id, channelId: discordChannel?.id,
}) })
?.then(async () => { ?.then(async () => {
logger?.verbose(`Counter deleted`); logger?.silly(`Counter deleted`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(
i18next.t( ":white_check_mark: Counter deleted successfully."
"manage:groups:counters:modules:remove:success01:description",
{
lng: locale,
ns: "plugins",
}
)
) )
.setColor(successColor), .setColor(successColor),
], ],

View file

@ -21,23 +21,23 @@ export default {
switch (options.getSubcommand()) { switch (options.getSubcommand()) {
case "give": case "give":
logger.verbose(`Executing give subcommand`); logger.silly(`Executing give subcommand`);
return modules.give.execute(interaction); return modules.give.execute(interaction);
case "set": case "set":
logger.verbose(`Executing set subcommand`); logger.silly(`Executing set subcommand`);
return modules.set.execute(interaction); return modules.set.execute(interaction);
case "take": case "take":
logger.verbose(`Executing take subcommand`); logger.silly(`Executing take subcommand`);
return modules.take.execute(interaction); return modules.take.execute(interaction);
case "transfer": case "transfer":
logger.verbose(`Executing transfer subcommand`); logger.silly(`Executing transfer subcommand`);
return modules.transfer.execute(interaction); return modules.transfer.execute(interaction);
default: default:
logger.verbose(`Unknown subcommand ${options.getSubcommand()}`); logger.silly(`Unknown subcommand ${options.getSubcommand()}`);
} }
}, },
}; };

View file

@ -53,7 +53,7 @@ export default {
// If amount option is null // If amount option is null
if (creditAmount === null) { if (creditAmount === null) {
logger?.verbose(`Amount is null`); logger?.silly(`Amount is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -69,7 +69,7 @@ export default {
// If amount is zero or below // If amount is zero or below
if (creditAmount <= 0) { if (creditAmount <= 0) {
logger?.verbose(`Amount is zero or below`); logger?.silly(`Amount is zero or below`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -84,7 +84,7 @@ export default {
} }
if (discordReceiver === null) { if (discordReceiver === null) {
logger?.verbose(`Discord receiver is null`); logger?.silly(`Discord receiver is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -98,7 +98,7 @@ export default {
}); });
} }
if (guild === null) { if (guild === null) {
logger?.verbose(`Guild is null`); logger?.silly(`Guild is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -115,7 +115,7 @@ export default {
const toUser = await fetchUser(discordReceiver, guild); const toUser = await fetchUser(discordReceiver, guild);
if (toUser === null) { if (toUser === null) {
logger?.verbose(`To user is null`); logger?.silly(`To user is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -147,7 +147,7 @@ export default {
// Save toUser // Save toUser
await toUser?.save()?.then(async () => { await toUser?.save()?.then(async () => {
logger?.verbose(`Saved toUser`); logger?.silly(`Saved toUser`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [

View 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 };

View file

@ -51,7 +51,7 @@ export default {
// If amount is null // If amount is null
if (creditAmount === null) { if (creditAmount === null) {
logger?.verbose(`Amount is null`); logger?.silly(`Amount is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -66,7 +66,7 @@ export default {
} }
if (discordUser === null) { if (discordUser === null) {
logger?.verbose(`User is null`); logger?.silly(`User is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -80,7 +80,7 @@ export default {
}); });
} }
if (guild === null) { if (guild === null) {
logger?.verbose(`Guild is null`); logger?.silly(`Guild is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -99,7 +99,7 @@ export default {
// If toUser does not exist // If toUser does not exist
if (toUser === null) { if (toUser === null) {
logger?.verbose(`User does not exist`); logger?.silly(`User does not exist`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -115,7 +115,7 @@ export default {
// If toUser.credits does not exist // If toUser.credits does not exist
if (toUser?.credits === null) { if (toUser?.credits === null) {
logger?.verbose(`User does not have any credits`); logger?.silly(`User does not have any credits`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -134,7 +134,7 @@ export default {
// Save toUser // Save toUser
await toUser?.save()?.then(async () => { await toUser?.save()?.then(async () => {
logger?.verbose(`Saved user`); logger?.silly(`Saved user`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [

View file

@ -56,7 +56,7 @@ export default {
// If amount is null // If amount is null
if (optionAmount === null) { if (optionAmount === null) {
logger?.verbose(`Amount is null`); logger?.silly(`Amount is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -72,7 +72,7 @@ export default {
// If amount is zero or below // If amount is zero or below
if (optionAmount <= 0) { if (optionAmount <= 0) {
logger?.verbose(`Amount is zero or below`); logger?.silly(`Amount is zero or below`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -87,7 +87,7 @@ export default {
} }
if (optionUser === null) { if (optionUser === null) {
logger?.verbose(`Discord receiver is null`); logger?.silly(`Discord receiver is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -101,7 +101,7 @@ export default {
}); });
} }
if (guild === null) { if (guild === null) {
logger?.verbose(`Guild is null`); logger?.silly(`Guild is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -120,7 +120,7 @@ export default {
// If toUser does not exist // If toUser does not exist
if (toUser === null) { if (toUser === null) {
logger?.verbose(`ToUser is null`); logger?.silly(`ToUser is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -136,7 +136,7 @@ export default {
// If toUser.credits does not exist // If toUser.credits does not exist
if (toUser?.credits === null) { if (toUser?.credits === null) {
logger?.verbose(`ToUser.credits is null`); logger?.silly(`ToUser.credits is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -155,7 +155,7 @@ export default {
// Save toUser // Save toUser
await toUser?.save()?.then(async () => { await toUser?.save()?.then(async () => {
logger?.verbose(`Saved toUser`); logger?.silly(`Saved toUser`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [

View file

@ -61,7 +61,7 @@ export default {
// If amount is null // If amount is null
if (optionAmount === null) { if (optionAmount === null) {
logger?.verbose(`Amount is null`); logger?.silly(`Amount is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -76,7 +76,7 @@ export default {
} }
if (guild === null) { if (guild === null) {
logger?.verbose(`Guild is null`); logger?.silly(`Guild is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -90,7 +90,7 @@ export default {
}); });
} }
if (optionFromUser === null) { if (optionFromUser === null) {
logger?.verbose(`From user is null`); logger?.silly(`From user is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -104,7 +104,7 @@ export default {
}); });
} }
if (optionToUser === null) { if (optionToUser === null) {
logger?.verbose(`To user is null`); logger?.silly(`To user is null`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -126,7 +126,7 @@ export default {
// If toUser does not exist // If toUser does not exist
if (fromUser === null) { if (fromUser === null) {
logger?.verbose(`From user does not exist`); logger?.silly(`From user does not exist`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -144,7 +144,7 @@ export default {
// If toUser.credits does not exist // If toUser.credits does not exist
if (!fromUser?.credits) { if (!fromUser?.credits) {
logger?.verbose(`From user does not have credits`); logger?.silly(`From user does not have credits`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -162,7 +162,7 @@ export default {
// If toUser does not exist // If toUser does not exist
if (toUser === null) { if (toUser === null) {
logger?.verbose(`To user does not exist`); logger?.silly(`To user does not exist`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -180,7 +180,7 @@ export default {
// If toUser.credits does not exist // If toUser.credits does not exist
if (toUser?.credits === null) { if (toUser?.credits === null) {
logger?.verbose(`To user does not have credits`); logger?.silly(`To user does not have credits`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -204,7 +204,7 @@ export default {
// Save users // Save users
await saveUser(fromUser, toUser)?.then(async () => { await saveUser(fromUser, toUser)?.then(async () => {
logger?.verbose(`Saved users`); logger?.silly(`Saved users`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [

View file

@ -0,0 +1,4 @@
import counters from "@plugins/manage/modules/counters";
import credits from "@plugins/manage/modules/credits";
export default { counters, credits };

View file

@ -20,11 +20,11 @@ export default {
const { options } = interaction; const { options } = interaction;
if (options?.getSubcommand() === "view") { if (options?.getSubcommand() === "view") {
logger?.verbose(`Executing view subcommand`); logger?.silly(`Executing view subcommand`);
return modules.view.execute(interaction); return modules.view.execute(interaction);
} }
logger?.verbose(`No subcommand found`); logger?.silly(`No subcommand found`);
}, },
}; };

View file

@ -36,7 +36,7 @@ export default {
); );
if (guild === null) { if (guild === null) {
return logger?.verbose(`Guild is null`); return logger?.silly(`Guild is null`);
} }
// User Information // User Information

View file

@ -19,11 +19,11 @@ export default {
const { options } = interaction; const { options } = interaction;
if (options?.getSubcommand() === "give") { if (options?.getSubcommand() === "give") {
logger?.verbose(`Executing give subcommand`); logger?.silly(`Executing give subcommand`);
await modules.give.execute(interaction); await modules.give.execute(interaction);
} }
logger?.verbose(`No subcommand found`); logger?.silly(`No subcommand found`);
}, },
}; };

View file

@ -58,14 +58,14 @@ export default {
const optionType = options?.getString("type"); const optionType = options?.getString("type");
if (guild === null) { if (guild === null) {
return logger?.verbose(`Guild is null`); return logger?.silly(`Guild is null`);
} }
// User information // User information
const userObj = await fetchUser(user, guild); const userObj = await fetchUser(user, guild);
if (userObj === null) { if (userObj === null) {
return logger?.verbose(`User is null`); return logger?.silly(`User is null`);
} }
// Check if user has a timeout // Check if user has a timeout
@ -77,7 +77,7 @@ export default {
// If user is not on timeout // If user is not on timeout
if (isTimeout) { if (isTimeout) {
logger?.verbose(`User is on timeout`); logger?.silly(`User is on timeout`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -97,7 +97,7 @@ export default {
// Do not allow self reputation // Do not allow self reputation
if (optionTarget?.id === user?.id) { 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({ return interaction?.editReply({
embeds: [ embeds: [
@ -117,21 +117,21 @@ export default {
// If type is positive // If type is positive
if (optionType === "positive") { if (optionType === "positive") {
logger?.verbose(`User is giving positive reputation`); logger?.silly(`User is giving positive reputation`);
userObj.reputation += 1; userObj.reputation += 1;
} }
// If type is negative // If type is negative
else if (optionType === "negative") { else if (optionType === "negative") {
logger?.verbose(`User is giving negative reputation`); logger?.silly(`User is giving negative reputation`);
userObj.reputation -= 1; userObj.reputation -= 1;
} }
// Save user // Save user
await userObj?.save()?.then(async () => { await userObj?.save()?.then(async () => {
logger?.verbose(`User reputation has been updated`); logger?.silly(`User reputation has been updated`);
await timeoutSchema?.create({ await timeoutSchema?.create({
guildId: guild?.id, guildId: guild?.id,
@ -156,7 +156,7 @@ export default {
}); });
setTimeout(async () => { setTimeout(async () => {
logger?.verbose(`Removing timeout`); logger?.silly(`Removing timeout`);
await timeoutSchema?.deleteOne({ await timeoutSchema?.deleteOne({
guildId: guild?.id, guildId: guild?.id,

View file

@ -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 };

View file

@ -1,3 +0,0 @@
import guild from "@plugins/settings/groups/guild";
export default { guild };

View file

@ -2,31 +2,31 @@
import { SlashCommandBuilder } from "@discordjs/builders"; import { SlashCommandBuilder } from "@discordjs/builders";
import { CommandInteraction } from "discord.js"; import { CommandInteraction } from "discord.js";
// Groups // Modules
import groups from "./groups"; import modules from "./modules";
// Handlers // Handlers
import logger from "@logger"; import logger from "@logger";
// Function // Function
export default { export default {
groups, modules,
builder: new SlashCommandBuilder() builder: new SlashCommandBuilder()
.setName("settings") .setName("settings")
.setDescription("Manage settings.") .setDescription("Manage settings.")
.addSubcommandGroup(groups.guild.builder), .addSubcommandGroup(modules.guild.builder),
async execute(interaction: CommandInteraction) { async execute(interaction: CommandInteraction) {
const { options } = interaction; const { options } = interaction;
if (options.getSubcommandGroup() === "guild") { 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`);
}, },
}; };

View file

@ -30,31 +30,31 @@ export default {
switch (options?.getSubcommand()) { switch (options?.getSubcommand()) {
case "pterodactyl": case "pterodactyl":
logger?.verbose(`Subcommand is pterodactyl`); logger?.silly(`Subcommand is pterodactyl`);
return modules.pterodactyl.execute(interaction); return modules.pterodactyl.execute(interaction);
case "credits": case "credits":
logger?.verbose(`Subcommand is credits`); logger?.silly(`Subcommand is credits`);
return modules.credits.execute(interaction); return modules.credits.execute(interaction);
case "points": case "points":
logger?.verbose(`Subcommand is points`); logger?.silly(`Subcommand is points`);
return modules.points.execute(interaction); return modules.points.execute(interaction);
case "welcome": case "welcome":
logger?.verbose(`Subcommand is welcome`); logger?.silly(`Subcommand is welcome`);
return modules.welcome.execute(interaction); return modules.welcome.execute(interaction);
case "audits": case "audits":
logger?.verbose(`Subcommand is audits`); logger?.silly(`Subcommand is audits`);
return modules.audits.execute(interaction); return modules.audits.execute(interaction);
case "shop": case "shop":
logger?.verbose(`Subcommand is shop`); logger?.silly(`Subcommand is shop`);
return modules.shop.execute(interaction); return modules.shop.execute(interaction);
default: default:
logger?.verbose(`Subcommand is not found`); logger?.silly(`Subcommand is not found`);
} }
}, },
}; };

View file

@ -48,7 +48,7 @@ export default {
}); });
if (guildDB === null) { if (guildDB === null) {
return logger?.verbose(`Guild not found in database.`); return logger?.silly(`Guild not found in database.`);
} }
// Modify values // Modify values
@ -58,7 +58,7 @@ export default {
// Save guild // Save guild
await guildDB?.save()?.then(async () => { await guildDB?.save()?.then(async () => {
logger?.verbose(`Guild audits updated.`); logger?.silly(`Guild audits updated.`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [

View file

@ -68,7 +68,7 @@ export default {
}); });
if (guildDB === null) { if (guildDB === null) {
return logger?.verbose(`Guild is null`); return logger?.silly(`Guild is null`);
} }
// Modify values // Modify values
@ -86,7 +86,7 @@ export default {
// Save guild // Save guild
await guildDB?.save()?.then(async () => { await guildDB?.save()?.then(async () => {
logger?.verbose(`Guild saved`); logger?.silly(`Guild saved`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [

View 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 };

View file

@ -56,7 +56,7 @@ export default {
}); });
if (guildDB === null) { if (guildDB === null) {
return logger?.verbose(`Guild not found in database.`); return logger?.silly(`Guild not found in database.`);
} }
// Modify values // Modify values
@ -69,7 +69,7 @@ export default {
// Save guild // Save guild
await guildDB?.save()?.then(async () => { await guildDB?.save()?.then(async () => {
logger?.verbose(`Guild points updated.`); logger?.silly(`Guild points updated.`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [

View file

@ -53,7 +53,7 @@ export default {
{ new: true, upsert: true } { new: true, upsert: true }
) )
.then(async () => { .then(async () => {
logger?.verbose(`Updated API credentials.`); logger?.silly(`Updated API credentials.`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [

View file

@ -48,7 +48,7 @@ export default {
}); });
if (guildDB === null) { if (guildDB === null) {
return logger?.verbose(`Guild not found in database.`); return logger?.silly(`Guild not found in database.`);
} }
// Modify values // Modify values
@ -61,7 +61,7 @@ export default {
// Save guild // Save guild
await guildDB?.save()?.then(async () => { await guildDB?.save()?.then(async () => {
logger?.verbose(`Guild shop updated.`); logger?.silly(`Guild shop updated.`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [

View file

@ -69,7 +69,7 @@ export default {
}); });
if (guildDB === null) { if (guildDB === null) {
return logger?.verbose(`Guild not found in database.`); return logger?.silly(`Guild not found in database.`);
} }
// Modify values // Modify values
@ -91,7 +91,7 @@ export default {
// Save guild // Save guild
await guildDB?.save()?.then(async () => { await guildDB?.save()?.then(async () => {
logger?.verbose(`Guild welcome updated.`); logger?.silly(`Guild welcome updated.`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [

View file

@ -0,0 +1,3 @@
import guild from "@plugins/settings/modules/guild";
export default { guild };

View file

@ -1,3 +0,0 @@
import roles from "./roles";
export default { roles };

View file

@ -5,37 +5,33 @@ import { CommandInteraction } from "discord.js";
// Modules // Modules
import modules from "./modules"; import modules from "./modules";
// Groups
import groups from "./groups";
// Handlers // Handlers
import logger from "../../logger"; import logger from "../../logger";
// Function // Function
export default { export default {
modules, modules,
groups,
builder: new SlashCommandBuilder() builder: new SlashCommandBuilder()
.setName("shop") .setName("shop")
.setDescription("Shop for credits and custom roles.") .setDescription("Shop for credits and custom roles.")
.addSubcommand(modules.pterodactyl.builder) .addSubcommand(modules.pterodactyl.builder)
.addSubcommandGroup(groups.roles.builder), .addSubcommandGroup(modules.roles.builder),
async execute(interaction: CommandInteraction) { async execute(interaction: CommandInteraction) {
const { options } = interaction; const { options } = interaction;
if (options?.getSubcommand() === "pterodactyl") { if (options?.getSubcommand() === "pterodactyl") {
logger.verbose(`Executing pterodactyl subcommand`); logger.silly(`Executing pterodactyl subcommand`);
return modules.pterodactyl.execute(interaction); return modules.pterodactyl.execute(interaction);
} }
if (options?.getSubcommandGroup() === "roles") { 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.`);
}, },
}; };

View file

@ -1,3 +1,4 @@
import pterodactyl from "@plugins/shop/modules/pterodactyl"; import pterodactyl from "@plugins/shop/modules/pterodactyl";
import roles from "@plugins/shop/modules/roles";
export default { pterodactyl }; export default { pterodactyl, roles };

View file

@ -37,7 +37,7 @@ export default {
const optionAmount = options?.getInteger("amount"); const optionAmount = options?.getInteger("amount");
if (optionAmount === null) { if (optionAmount === null) {
logger?.verbose(`Amount is null.`); logger?.silly(`Amount is null.`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -56,19 +56,19 @@ export default {
} }
if (guild === null) { if (guild === null) {
return logger?.verbose(`Guild is null`); return logger?.silly(`Guild is null`);
} }
const userDB = await fetchUser(user, guild); const userDB = await fetchUser(user, guild);
if (userDB === null) { if (userDB === null) {
return logger?.verbose(`User is null`); return logger?.silly(`User is null`);
} }
const dmUser = client?.users?.cache?.get(user?.id); const dmUser = client?.users?.cache?.get(user?.id);
if ((optionAmount || userDB?.credits) < 100) { 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({ return interaction?.editReply({
embeds: [ embeds: [
@ -93,7 +93,7 @@ export default {
} }
if ((optionAmount || userDB?.credits) > 1000000) { 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({ return interaction?.editReply({
embeds: [ embeds: [
@ -119,7 +119,7 @@ export default {
} }
if (userDB?.credits < optionAmount) { if (userDB?.credits < optionAmount) {
logger?.verbose(`User credits is below amount.`); logger?.silly(`User credits is below amount.`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -168,7 +168,7 @@ export default {
}) })
?.then(async () => { ?.then(async () => {
logger?.verbose(`Successfully created voucher.`); logger?.silly(`Successfully created voucher.`);
userDB.credits -= optionAmount || userDB?.credits; userDB.credits -= optionAmount || userDB?.credits;
@ -176,7 +176,7 @@ export default {
?.save() ?.save()
?.then(async () => { ?.then(async () => {
logger?.verbose(`Successfully saved new credits.`); logger?.silly(`Successfully saved new credits.`);
await dmUser?.send({ await dmUser?.send({
embeds: [ embeds: [
@ -218,7 +218,7 @@ export default {
}) })
.catch(async (error) => { .catch(async (error) => {
logger?.verbose(`Error saving new credits. - ${error}`); logger?.silly(`Error saving new credits. - ${error}`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -238,7 +238,7 @@ export default {
}) })
.catch(async (error: any) => { .catch(async (error: any) => {
logger?.verbose(`Error creating voucher. - ${error}`); logger?.silly(`Error creating voucher. - ${error}`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [

View file

@ -33,7 +33,7 @@ export default {
if (guildDB === null) return; if (guildDB === null) return;
if (!guildDB.shop.roles.status) { if (!guildDB.shop.roles.status) {
logger.verbose(`Shop roles disabled.`); logger.silly(`Shop roles disabled.`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -52,13 +52,13 @@ export default {
} }
if (options?.getSubcommand() === "buy") { if (options?.getSubcommand() === "buy") {
logger.verbose(`Executing buy subcommand`); logger.silly(`Executing buy subcommand`);
await modules.buy.execute(interaction); await modules.buy.execute(interaction);
} }
if (options?.getSubcommand() === "cancel") { if (options?.getSubcommand() === "cancel") {
logger.verbose(`Executing cancel subcommand`); logger.silly(`Executing cancel subcommand`);
await modules.cancel.execute(interaction); await modules.cancel.execute(interaction);
} }

View file

@ -52,7 +52,7 @@ export default {
// If amount is null // If amount is null
if (optionName === null) { if (optionName === null) {
logger?.verbose(`Name is null.`); logger?.silly(`Name is null.`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -85,15 +85,15 @@ export default {
const userDB = await fetchUser(user, guild); const userDB = await fetchUser(user, guild);
if (userDB === null) { if (userDB === null) {
return logger?.verbose(`User is null`); return logger?.silly(`User is null`);
} }
if (guildDB === null) { if (guildDB === null) {
return logger?.verbose(`Guild is null`); return logger?.silly(`Guild is null`);
} }
if (guildDB.shop === null) { if (guildDB.shop === null) {
return logger?.verbose(`Shop is null`); return logger?.silly(`Shop is null`);
} }
const { pricePerHour } = guildDB.shop.roles; const { pricePerHour } = guildDB.shop.roles;
@ -112,7 +112,7 @@ export default {
await (member?.roles as GuildMemberRoleManager)?.add(role?.id); 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({ return interaction?.editReply({
embeds: [ embeds: [
@ -139,7 +139,7 @@ export default {
}); });
}) })
.catch(async (error) => { .catch(async (error) => {
return logger?.verbose(`Role could not be created. ${error}`); return logger?.silly(`Role could not be created. ${error}`);
}); });
}, },
}; };

View file

@ -39,7 +39,7 @@ export default {
const optionRole = options.getRole("role"); const optionRole = options.getRole("role");
if (optionRole === null) { if (optionRole === null) {
logger?.verbose(`Role is null.`); logger?.silly(`Role is null.`);
return interaction?.editReply({ return interaction?.editReply({
embeds: [ embeds: [
@ -73,7 +73,7 @@ export default {
const userDB = await fetchUser(user, guild); const userDB = await fetchUser(user, guild);
if (userDB === null) { if (userDB === null) {
return logger?.verbose(`User is null`); return logger?.silly(`User is null`);
} }
await shopRolesSchema?.deleteOne({ await shopRolesSchema?.deleteOne({
@ -104,7 +104,7 @@ export default {
}); });
}) })
.catch(async (error) => { .catch(async (error) => {
return logger?.verbose(`Role could not be deleted. ${error}`); return logger?.silly(`Role could not be deleted. ${error}`);
}); });
}, },
}; };

View file

@ -1,6 +1,5 @@
import { successColor, footerText, footerIcon } from "@config/embed"; import { successColor, footerText, footerIcon } from "@config/embed";
import i18next from "i18next";
import { CommandInteraction, MessageEmbed } from "discord.js"; import { CommandInteraction, MessageEmbed } from "discord.js";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders"; import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
@ -18,32 +17,19 @@ export default {
); );
}, },
execute: async (interaction: CommandInteraction) => { execute: async (interaction: CommandInteraction) => {
const { locale } = interaction;
const userOption = interaction.options.getUser("user"); const userOption = interaction.options.getUser("user");
const targetUser = userOption || interaction.user; const targetUser = userOption || interaction.user;
const embed = new MessageEmbed() const embed = new MessageEmbed()
.setTitle( .setTitle("[:tools:] Avatar")
i18next.t("utility:modules:avatar:general:title", {
lng: locale,
ns: "plugins",
})
)
.setTimestamp(new Date()) .setTimestamp(new Date())
.setFooter({ text: footerText, iconURL: footerIcon }); .setFooter({ text: footerText, iconURL: footerIcon });
return interaction.editReply({ return interaction.editReply({
embeds: [ embeds: [
embed embed
.setDescription( .setDescription(`${targetUser.username}'s avatar:`)
i18next.t("utility:modules:avatar:success01:description", {
lng: locale,
ns: "plugins",
user: targetUser,
})
)
.setThumbnail(targetUser.displayAvatarURL()) .setThumbnail(targetUser.displayAvatarURL())
.setColor(successColor), .setColor(successColor),
], ],

View file

@ -64,7 +64,7 @@ export default async (client: Client) => {
guildId, guildId,
}) })
.then(async () => { .then(async () => {
logger.verbose( logger.silly(
`Shop role document ${roleId} has been deleted from user ${userId}.` `Shop role document ${roleId} has been deleted from user ${userId}.`
); );
}) })
@ -78,7 +78,7 @@ export default async (client: Client) => {
} }
if (new Date() > nextPayment) { if (new Date() > nextPayment) {
logger.verbose( logger.silly(
`Shop role ${roleId} is due for payment. Withdrawing credits from user ${userId}.` `Shop role ${roleId} is due for payment. Withdrawing credits from user ${userId}.`
); );
@ -109,7 +109,7 @@ export default async (client: Client) => {
await role await role
.save() .save()
.then(async () => { .then(async () => {
logger.verbose(`Shop role ${roleId} has been paid for.`); logger.silly(`Shop role ${roleId} has been paid for.`);
}) })
.catch(async (err) => { .catch(async (err) => {
logger.error( 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}.` `Shop role ${roleId} has been paid for. Keeping role ${roleId} for user ${userId}.`
); );
}) })