aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.vscode/settings.json238
-rw-r--r--src/commands/config/features.ts5
-rw-r--r--src/commands/config/settings.ts168
-rw-r--r--src/commands/dev/__template.ts7
-rw-r--r--src/commands/dev/setLevel.ts6
-rw-r--r--src/lib/extensions/discord-akairo/BushClientUtil.ts6
-rw-r--r--src/lib/models/Guild.ts79
-rw-r--r--src/listeners/client/interactionCreate.ts15
-rw-r--r--src/listeners/commands/commandError.ts2
-rw-r--r--src/listeners/message/automodCreate.ts9
-rw-r--r--src/listeners/message/level.ts2
-rw-r--r--yarn.lock52
12 files changed, 357 insertions, 232 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 1a05c63..105375b 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,121 +1,121 @@
{
- "files.exclude": {
- "**/.git": true,
- "**/.svn": true,
- "**/.hg": true,
- "**/CVS": true,
- "**/.DS_Store": true,
- "dist": false,
- ".pnp.js": true
- },
- "javascript.preferences.importModuleSpecifier": "project-relative",
- "typescript.preferences.importModuleSpecifier": "project-relative",
- "typescript.preferences.importModuleSpecifierEnding": "minimal",
- "search.exclude": {
- "**/.yarn": true,
- "**/.pnp.*": true
- },
- "editor.codeActionsOnSave": {
- "source.organizeImports": true,
- "source.fixAll.eslint": true,
- "source.format": true
- },
- "editor.formatOnSave": true,
- "diffEditor.wordWrap": "on",
- "editor.insertSpaces": false,
- "editor.wordWrap": "on",
- "editor.tabSize": 2,
- "prettier.configPath": "package.json",
- "prettier.prettierPath": ".yarn/sdks/prettier/index.js",
- "prettier.withNodeModules": true,
- "prettier.useEditorConfig": false,
- "eslint.nodePath": ".yarn/sdks",
- "typescript.tsdk": ".yarn/sdks/typescript/lib",
- "typescript.enablePromptUseWorkspaceTsdk": true,
- "better-comments.highlightPlainText": true,
- "better-comments.multilineComments": true,
- "better-comments.tags": [
- {
- "tag": "!",
- "color": "#FF2D00",
- "strikethrough": false,
- "underline": false,
- "backgroundColor": "transparent",
- "bold": false,
- "italic": false
- },
- {
- "tag": "?",
- "color": "#3498DB",
- "strikethrough": false,
- "underline": false,
- "backgroundColor": "transparent",
- "bold": false,
- "italic": false
- },
- // {
- // "tag": "#",
- // "color": "#f003fc",
- // "strikethrough": false,
- // "underline": false,
- // "backgroundColor": "transparent",
- // "bold": false,
- // "italic": false
- // },
- // {
- // "tag": "//",
- // "color": "#474747",
- // "strikethrough": true,
- // "underline": false,
- // "backgroundColor": "transparent",
- // "bold": false,
- // "italic": false
- // },
- {
- "tag": "todo",
- "color": "#FF8C00",
- "strikethrough": false,
- "underline": false,
- "backgroundColor": "transparent",
- "bold": false,
- "italic": false
- },
- // {
- // "tag": "*",
- // "color": "#98C379",
- // "strikethrough": false,
- // "underline": false,
- // "backgroundColor": "transparent",
- // "bold": false,
- // "italic": false
- // },
- {
- "tag": "@ts-",
- "color": "#f54242",
- "strikethrough": false,
- "underline": false,
- "backgroundColor": "transparent",
- "bold": false,
- "italic": false
- },
- {
- "tag": "eslint-",
- "color": "#f54242",
- "strikethrough": false,
- "underline": false,
- "backgroundColor": "transparent",
- "bold": false,
- "italic": false
- },
- {
- "tag": "~",
- "color": "#474747",
- "strikethrough": true,
- "underline": false,
- "backgroundColor": "transparent",
- "bold": false,
- "italic": false
- },
- ],
- "compile-hero.disable-compile-files-on-did-save-code": true
+ "files.exclude": {
+ "**/.git": true,
+ "**/.svn": true,
+ "**/.hg": true,
+ "**/CVS": true,
+ "**/.DS_Store": true,
+ "dist": false,
+ ".pnp.js": true
+ },
+ "javascript.preferences.importModuleSpecifier": "project-relative",
+ "typescript.preferences.importModuleSpecifier": "project-relative",
+ "typescript.preferences.importModuleSpecifierEnding": "minimal",
+ "search.exclude": {
+ "**/.yarn": true,
+ "**/.pnp.*": true
+ },
+ "editor.codeActionsOnSave": {
+ "source.organizeImports": true,
+ "source.fixAll.eslint": true,
+ "source.format": true
+ },
+ "editor.formatOnSave": true,
+ "diffEditor.wordWrap": "on",
+ "editor.insertSpaces": false,
+ "editor.wordWrap": "on",
+ "editor.tabSize": 2,
+ "prettier.configPath": "package.json",
+ "prettier.prettierPath": ".yarn/sdks/prettier/index.js",
+ "prettier.withNodeModules": true,
+ "prettier.useEditorConfig": false,
+ "eslint.nodePath": ".yarn/sdks",
+ "typescript.tsdk": ".yarn/sdks/typescript/lib",
+ "typescript.enablePromptUseWorkspaceTsdk": true,
+ "better-comments.highlightPlainText": true,
+ "better-comments.multilineComments": true,
+ "better-comments.tags": [
+ {
+ "tag": "!",
+ "color": "#FF2D00",
+ "strikethrough": false,
+ "underline": false,
+ "backgroundColor": "transparent",
+ "bold": false,
+ "italic": false
+ },
+ {
+ "tag": "?",
+ "color": "#3498DB",
+ "strikethrough": false,
+ "underline": false,
+ "backgroundColor": "transparent",
+ "bold": false,
+ "italic": false
+ },
+ // {
+ // "tag": "#",
+ // "color": "#f003fc",
+ // "strikethrough": false,
+ // "underline": false,
+ // "backgroundColor": "transparent",
+ // "bold": false,
+ // "italic": false
+ // },
+ // {
+ // "tag": "//",
+ // "color": "#474747",
+ // "strikethrough": true,
+ // "underline": false,
+ // "backgroundColor": "transparent",
+ // "bold": false,
+ // "italic": false
+ // },
+ {
+ "tag": "todo",
+ "color": "#FF8C00",
+ "strikethrough": false,
+ "underline": false,
+ "backgroundColor": "transparent",
+ "bold": false,
+ "italic": false
+ },
+ // {
+ // "tag": "*",
+ // "color": "#98C379",
+ // "strikethrough": false,
+ // "underline": false,
+ // "backgroundColor": "transparent",
+ // "bold": false,
+ // "italic": false
+ // },
+ {
+ "tag": "@ts-",
+ "color": "#f54242",
+ "strikethrough": false,
+ "underline": false,
+ "backgroundColor": "transparent",
+ "bold": false,
+ "italic": false
+ },
+ {
+ "tag": "eslint-",
+ "color": "#f54242",
+ "strikethrough": false,
+ "underline": false,
+ "backgroundColor": "transparent",
+ "bold": false,
+ "italic": false
+ },
+ {
+ "tag": "~",
+ "color": "#474747",
+ "strikethrough": true,
+ "underline": false,
+ "backgroundColor": "transparent",
+ "bold": false,
+ "italic": false
+ }
+ ],
+ "compile-hero.disable-compile-files-on-did-save-code": true
}
diff --git a/src/commands/config/features.ts b/src/commands/config/features.ts
index 31facfc..9a5fa5b 100644
--- a/src/commands/config/features.ts
+++ b/src/commands/config/features.ts
@@ -1,7 +1,6 @@
import { BushCommand, BushMessage, BushSlashMessage, GuildFeatures, guildFeaturesArr, guildFeaturesObj } from '@lib';
import { Message, MessageActionRow, MessageEmbed, MessageSelectMenu, SelectMenuInteraction } from 'discord.js';
-//todo: fix this so that it doesn't just select one feature but instead toggles it
export default class FeaturesCommand extends BushCommand {
public constructor() {
super('features', {
@@ -36,7 +35,7 @@ export default class FeaturesCommand extends BushCommand {
});
collector.on('collect', async (interaction: SelectMenuInteraction) => {
- if (interaction.user.id == message.author.id || client.config.owners.includes(interaction.user.id)) {
+ if (interaction.user.id === message.author.id || client.config.owners.includes(interaction.user.id)) {
if (!message.guild) throw new Error('message.guild is null');
const [selected]: GuildFeatures[] = interaction.values as GuildFeatures[];
@@ -84,7 +83,7 @@ export default class FeaturesCommand extends BushCommand {
.setPlaceholder('Select A Feature to Toggle')
.setMaxValues(1)
.setMinValues(1)
- .setCustomId('featureCommand_selectFeature')
+ .setCustomId('command_selectFeature')
.setDisabled(disable)
);
}
diff --git a/src/commands/config/settings.ts b/src/commands/config/settings.ts
index 0b71629..003e118 100644
--- a/src/commands/config/settings.ts
+++ b/src/commands/config/settings.ts
@@ -1,56 +1,114 @@
-// import { BushCommand, BushMessage, BushSlashMessage, guildSettings } from '@lib';
+import { BushCommand, BushMessage, BushSlashMessage, guildSettings } from '@lib';
+import {
+ Message,
+ MessageActionRow,
+ MessageButton,
+ MessageComponentInteraction,
+ MessageEmbed,
+ MessageOptions,
+ MessageSelectMenu
+} from 'discord.js';
-// export default class SettingsCommand extends BushCommand {
-// public constructor() {
-// super('settings', {
-// aliases: ['settings', 'settings', 'configure', 'config'],
-// category: 'config',
-// description: {
-// content: 'Configure server options. Hint this is easier to use with the slash command.',
-// usage: 'config <\'add\'|\'remove\'|\'toggle\'> <setting>',
-// examples: ['template 1 2']
-// },
-// args: [
-// {
-// id: 'action',
-// customType: ['add', 'remove', 'toggle'],
-// prompt: {
-// start: 'What action would you like to perform, it can be `add`, `remove`, or `toggle`.',
-// retry: '{error} Choose a either `add`, `remove`, or `toggle`.',
-// optional: false
-// }
-// },
-// {
-// id: 'setting',
-// customType: Object.keys(guildSettings),
-// prompt: {
-// start: 'What would you like to set your second argument to be?',
-// retry: '{error} Pick a valid argument.',
-// optional: true
-// }
-// }
-// ],
-// slash: true,
-// slashOptions: [
-// {
-// name: 'required_argument',
-// description: 'What would you like to set your first argument to be?',
-// type: 'STRING',
-// required: true
-// },
-// {
-// name: 'optional_argument',
-// description: 'What would you like to set your second argument to be?',
-// type: 'STRING',
-// required: false
-// }
-// ],
-// channel: 'guild',
-// clientPermissions: ['SEND_MESSAGES'],
-// userPermissions: ['SEND_MESSAGES']
-// });
-// }
-// public override async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
-// return await message.util.reply(`${util.emojis.error} Do not use the template command.`);
-// }
-// }
+export default class SettingsCommand extends BushCommand {
+ public constructor() {
+ super('settings', {
+ aliases: ['settings', 'setting', 'configure', 'config'],
+ category: 'config',
+ description: {
+ content: 'Configure server options.',
+ usage: 'settings',
+ examples: ['settings']
+ },
+ slash: true,
+ channel: 'guild',
+ clientPermissions: ['SEND_MESSAGES'],
+ userPermissions: ['SEND_MESSAGES', 'MANAGE_GUILD'],
+ ownerOnly: true
+ });
+ }
+
+ public override async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
+ if (!message.guild) return await message.util.reply(`${util.emojis.error} This command can only be used in servers.`);
+ const messageOptions = await this.generateMessageOptions(message);
+ const msg = (await message.util.reply(messageOptions)) as Message;
+ const collector = msg.createMessageComponentCollector({
+ channel: message.channel ?? undefined,
+ guild: message.guild,
+ message: message as Message,
+ time: 300_000
+ });
+
+ collector.on('collect', async (interaction: MessageComponentInteraction) => {
+ if (interaction.user.id === message.author.id || client.config.owners.includes(interaction.user.id)) {
+ if (!message.guild) throw new Error('message.guild is null');
+ switch (interaction.customId) {
+ case 'command_settingsSel': {
+ if (!interaction.isSelectMenu()) return;
+
+ return interaction.update(
+ await this.generateMessageOptions(message, interaction.values[0] as keyof typeof guildSettings)
+ );
+ }
+ }
+ } else {
+ return await interaction?.deferUpdate().catch(() => undefined);
+ }
+ });
+ }
+
+ public async generateMessageOptions(
+ message: BushMessage | BushSlashMessage,
+ feature?: keyof typeof guildSettings
+ ): Promise<MessageOptions> {
+ if (!message.guild) throw new Error('message.guild is null');
+ const settingsEmbed = new MessageEmbed().setTitle(`${message.guild!.name}'s Settings`).setColor(util.colors.default);
+ if (!feature) {
+ const settingsArr = Object.keys(guildSettings) as (keyof typeof guildSettings)[];
+ const desc = settingsArr.map((s) => `**${guildSettings[s].name}**`).join('\n');
+ settingsEmbed.setDescription(desc);
+
+ const selMenu = new MessageActionRow().addComponents(
+ new MessageSelectMenu()
+ .addOptions(
+ ...settingsArr.map((s) => ({
+ label: guildSettings[s].name,
+ value: s,
+ description: guildSettings[s].description
+ }))
+ )
+ .setPlaceholder('Select A Setting to View')
+ .setMaxValues(1)
+ .setMinValues(1)
+ .setCustomId('command_settingsSel')
+ );
+ return { embeds: [settingsEmbed], components: [selMenu] };
+ } else {
+ const components = new MessageActionRow().addComponents(
+ new MessageButton().setStyle('PRIMARY').setCustomId('command_settingsBack').setLabel('Back')
+ );
+ settingsEmbed.setDescription(guildSettings[feature].description);
+ switch (guildSettings[feature].type as 'string' | 'channel' | 'channel-array' | 'role' | 'role-array') {
+ case 'string': {
+ settingsEmbed.addField(guildSettings[feature].name, (await message.guild.getSetting(feature)).toString());
+ settingsEmbed.setFooter(
+ `Run "${await message.guild.getSetting('prefix')}settings set ${feature} <value>" to set this setting.`
+ );
+ return { embeds: [settingsEmbed], components: [components] };
+ }
+ case 'channel': {
+ break;
+ }
+ case 'channel-array': {
+ break;
+ }
+ case 'role': {
+ break;
+ }
+ case 'role-array': {
+ break;
+ }
+ }
+ return {};
+ }
+ }
+}
diff --git a/src/commands/dev/__template.ts b/src/commands/dev/__template.ts
index be4f7a7..4cf407c 100644
--- a/src/commands/dev/__template.ts
+++ b/src/commands/dev/__template.ts
@@ -53,7 +53,12 @@ export default class TemplateCommand extends BushCommand {
userPermissions: ['SEND_MESSAGES']
});
}
- public override async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
+
+ public override async exec(
+ message: BushMessage | BushSlashMessage,
+ args: { required_argument: string; optional_argumen: string }
+ ): Promise<unknown> {
return await message.util.reply(`${util.emojis.error} Do not use the template command.`);
+ args;
}
}
diff --git a/src/commands/dev/setLevel.ts b/src/commands/dev/setLevel.ts
index e69b9df..777ef60 100644
--- a/src/commands/dev/setLevel.ts
+++ b/src/commands/dev/setLevel.ts
@@ -55,15 +55,17 @@ export default class SetLevelCommand extends BushCommand {
): Promise<unknown> {
if (!message.author.isOwner())
return await message.util.reply(`${util.emojis.error} Only my developers can run this command.`);
+ if (!message.guild) return await message.util.reply(`${util.emojis.error} This command can only be run in a guild.`);
+ if (!user.id) throw new Error('user.id is null');
const [levelEntry] = await Level.findOrBuild({
where: {
user: user.id,
- guild: message.guild!.id
+ guild: message.guild.id
},
defaults: {
user: user.id,
- guild: message.guild!.id
+ guild: message.guild.id
}
});
await levelEntry.update({ xp: Level.convertLevelToXp(level) });
diff --git a/src/lib/extensions/discord-akairo/BushClientUtil.ts b/src/lib/extensions/discord-akairo/BushClientUtil.ts
index da98dac..ef51b63 100644
--- a/src/lib/extensions/discord-akairo/BushClientUtil.ts
+++ b/src/lib/extensions/discord-akairo/BushClientUtil.ts
@@ -1012,11 +1012,7 @@ export class BushClientUtil extends ClientUtil {
* @param surroundChar2 - The character placed in the end of the element. Defaults to `surroundChar1`.
*/
public surroundArray(array: string[], surroundChar1: string, surroundChar2?: string): string[] {
- const newArray: string[] = [];
- array.forEach((a) => {
- newArray.push(`${surroundChar1}${a}${surroundChar2 ?? surroundChar1}`);
- });
- return newArray;
+ return array.map((a) => `${surroundChar1}${a}${surroundChar2 ?? surroundChar1}`);
}
public parseDuration(content: string, remove = true): { duration: number; contentWithoutTime: string | null } {
diff --git a/src/lib/models/Guild.ts b/src/lib/models/Guild.ts
index 614bf15..66deddb 100644
--- a/src/lib/models/Guild.ts
+++ b/src/lib/models/Guild.ts
@@ -18,6 +18,7 @@ export interface GuildModel {
autoModPhases: string[];
enabledFeatures: GuildFeatures[];
joinRoles: Snowflake[];
+ automodLogChannel: Snowflake;
}
export interface GuildModelCreationAttributes {
@@ -34,16 +35,58 @@ export interface GuildModelCreationAttributes {
autoModPhases?: string[];
enabledFeatures?: GuildFeatures[];
joinRoles?: Snowflake[];
+ automodLogChannel?: Snowflake;
}
export const guildSettings = {
- prefix: { type: 'string' },
- autoPublishChannels: { type: 'channel-array' },
- welcomeChannel: { type: 'channel-array' },
- muteRole: { type: 'role' },
- punishmentEnding: { type: 'string' },
- lockdownChannels: { type: 'channel-array' },
- joinRoles: { type: 'role-array' }
+ prefix: {
+ name: 'Prefix',
+ description: 'description goes here',
+ type: 'string',
+ configurable: true
+ },
+ autoPublishChannels: {
+ name: 'Auto Publish Channels',
+ description: 'description goes here',
+ type: 'channel-array',
+ configurable: true
+ },
+ welcomeChannel: {
+ name: 'Welcome Channel',
+ description: 'description goes here',
+ type: 'channel-array',
+ configurable: true
+ },
+ muteRole: {
+ name: 'Mute Role',
+ description: 'description goes here',
+ type: 'role',
+ configurable: true
+ },
+ punishmentEnding: {
+ name: 'Punishment Ending',
+ description: 'description goes here',
+ type: 'string',
+ configurable: true
+ },
+ lockdownChannels: {
+ name: 'Lockdown Channels',
+ description: 'description goes here',
+ type: 'channel-array',
+ configurable: false // not implemented yet
+ },
+ joinRoles: {
+ name: 'Join Roles',
+ description: 'description goes here',
+ type: 'role-array',
+ configurable: true
+ },
+ automodLogChannel: {
+ name: 'Automod Log Channel',
+ description: 'description goes here',
+ type: 'channel',
+ configurable: true
+ }
};
export const guildFeaturesObj = {
@@ -53,11 +96,11 @@ export const guildFeaturesObj = {
},
autoPublish: {
name: 'Auto Publish',
- description: 'Auto publishes all messages in configured announcement channels.'
+ description: 'Publishes messages in configured announcement channels.'
},
autoThread: {
name: 'Auto Thread',
- description: 'Automatically creates a new thread for every message in configured channels.'
+ description: 'Creates a new thread for messages in configured channels.'
},
blacklistedFile: {
name: 'Blacklisted File',
@@ -73,7 +116,7 @@ export const guildFeaturesObj = {
},
stickyRoles: {
name: 'Sticky Roles',
- description: "Stores users' roles when they leave the server and returns them when they rejoin."
+ description: 'Restores past roles to a user when they rejoin.'
}
};
@@ -211,6 +254,16 @@ export class Guild extends BaseModel<GuildModel, GuildModelCreationAttributes> i
throw new Error(NEVER_USED);
}
+ /**
+ * The channel to send automod logs to.
+ */
+ public get automodLogChannel(): Snowflake {
+ throw new Error(NEVER_USED);
+ }
+ public set automodLogChannel(_: Snowflake) {
+ throw new Error(NEVER_USED);
+ }
+
public static initModel(sequelize: Sequelize, client: BushClient): void {
Guild.init(
{
@@ -242,7 +295,11 @@ export class Guild extends BaseModel<GuildModel, GuildModelCreationAttributes> i
lockdownChannels: jsonArrayInit('lockdownChannels'),
autoModPhases: jsonArrayInit('autoModPhases'),
enabledFeatures: jsonArrayInit('enabledFeatures'),
- joinRoles: jsonArrayInit('joinRoles')
+ joinRoles: jsonArrayInit('joinRoles'),
+ automodLogChannel: {
+ type: DataTypes.STRING,
+ allowNull: true
+ }
},
{ sequelize: sequelize }
);
diff --git a/src/listeners/client/interactionCreate.ts b/src/listeners/client/interactionCreate.ts
index b4cc353..d2bc6b5 100644
--- a/src/listeners/client/interactionCreate.ts
+++ b/src/listeners/client/interactionCreate.ts
@@ -25,10 +25,10 @@ export default class InteractionCreateListener extends BushListener {
);
return;
} else if (interaction.isButton()) {
- if (interaction.customId.startsWith('paginate_')) return;
+ if (interaction.customId.startsWith('paginate_') || interaction.customId.startsWith('command_')) return;
return await interaction.reply({ content: 'Buttons go brrr', ephemeral: true });
} else if (interaction.isSelectMenu()) {
- if (interaction.customId.startsWith('featureCommand_')) return;
+ if (interaction.customId.startsWith('command_')) return;
return await interaction.reply({
content: `You selected ${
Array.isArray(interaction.values)
@@ -37,15 +37,6 @@ export default class InteractionCreateListener extends BushListener {
}.`,
ephemeral: true
});
- } /* else if (interaction.isContextMenu()) {
- if (interaction.commandName === 'View Raw') {
- await interaction.deferReply({ ephemeral: true });
- const embed = await ViewRawCommand.getRawData(interaction.options.getMessage('message') as BushMessage, {
- json: false,
- js: false
- });
- return await interaction.editReply({ embeds: [embed] });
- }
- } */
+ }
}
}
diff --git a/src/listeners/commands/commandError.ts b/src/listeners/commands/commandError.ts
index f43e17d..a3618e7 100644
--- a/src/listeners/commands/commandError.ts
+++ b/src/listeners/commands/commandError.ts
@@ -96,7 +96,7 @@ export default class CommandErrorListener extends BushListener {
}
const inspectOptions = {
showHidden: false,
- depth: 5,
+ depth: 9,
colors: false,
customInspect: true,
showProxy: false,
diff --git a/src/listeners/message/automodCreate.ts b/src/listeners/message/automodCreate.ts
index f78efec..4165043 100644
--- a/src/listeners/message/automodCreate.ts
+++ b/src/listeners/message/automodCreate.ts
@@ -97,16 +97,15 @@ export default class AutomodMessageCreateListener extends BushListener {
: highestOffence === 2
? util.colors.orange
: util.colors.red;
+ // TODO: remove hard coded value
void (message.guild.channels.cache.get('783088333055066212') as TextChannel).send({
embeds: [
new MessageEmbed()
.setTitle(`[Severity ${highestOffence}] Automod Action Performed`)
.setDescription(
- `**User:** ${message.author.tag} (${message.author.tag})\n**Sent From**: <#${
- message.channel.id
- }> [Jump to context](${message.url})\n**Blacklisted Words:** ${util
- .surroundArray(Object.keys(offences), '`')
- .join(', ')}`
+ `**User:** ${message.author} (${message.author.tag})\n**Sent From**: <#${message.channel.id}> [Jump to context](${
+ message.url
+ })\n**Blacklisted Words:** ${util.surroundArray(Object.keys(offences), '`').join(', ')}`
)
.addField('Message Content', `${await util.codeblock(message.content, 1024)}`)
.setColor(color)
diff --git a/src/listeners/message/level.ts b/src/listeners/message/level.ts
index 33e7b08..83d9e3b 100644
--- a/src/listeners/message/level.ts
+++ b/src/listeners/message/level.ts
@@ -35,7 +35,7 @@ export default class LevelListener extends BushListener {
});
if (success)
void client.logger.verbose(
- `levelMessageListener`,
+ `levelMessage`,
`Gave <<${xpToGive}>> XP to <<${message.author.tag}>> in <<${message.guild}>>.`
);
this.#levelCooldowns.add(`${message.guild.id}-${message.author.id}`);
diff --git a/yarn.lock b/yarn.lock
index fdd473c..096d823 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -102,6 +102,13 @@ __metadata:
languageName: node
linkType: hard
+"@gar/promisify@npm:^1.0.1":
+ version: 1.1.2
+ resolution: "@gar/promisify@npm:1.1.2"
+ checksum: d05081e0887a49c178b75ee3067bd6ee086f73c154d121b854fb2e044e8a89cb1cbb6de3a0dd93a519b80f0531fda68b099dd7256205f7fbb3490324342f2217
+ languageName: node
+ linkType: hard
+
"@humanwhocodes/config-array@npm:^0.5.0":
version: 0.5.0
resolution: "@humanwhocodes/config-array@npm:0.5.0"
@@ -166,6 +173,16 @@ __metadata:
languageName: node
linkType: hard
+"@npmcli/fs@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "@npmcli/fs@npm:1.0.0"
+ dependencies:
+ "@gar/promisify": ^1.0.1
+ semver: ^7.3.5
+ checksum: f2b4990107dd2a5b18794c89aaff6f62f3a67883d49a20602fdfc353cbc7f8c5fd50edeffdc769e454900e01b8b8e43d0b9eb524d00963d69f3c829be1a2e8ac
+ languageName: node
+ linkType: hard
+
"@npmcli/move-file@npm:^1.0.1":
version: 1.1.2
resolution: "@npmcli/move-file@npm:1.1.2"
@@ -329,16 +346,16 @@ __metadata:
linkType: hard
"@types/node@npm:*":
- version: 16.7.1
- resolution: "@types/node@npm:16.7.1"
- checksum: fcf1a2c7b1f19c2201574b2110176b49c6efd824a39b2ed8ac3e6688740e2a35bef95a3334dfa345f4bd4873fd8b79d8ac8cfcc9fcd3d2f4f8f993c2c37ce4ab
+ version: 16.7.2
+ resolution: "@types/node@npm:16.7.2"
+ checksum: aef77c109e2fd93b5dc6ec0a57a0878aaaa58adf0e63d9618d67b116ad3f2a3eb2589a99deaf9fda4a0805068b2533e3d2cf8e8dc3572251c498ec3dc929a76c
languageName: node
linkType: hard
"@types/node@npm:^14.14.22":
- version: 14.17.11
- resolution: "@types/node@npm:14.17.11"
- checksum: 94192a5f6f5da51a10dfa959049a5cfcff440fbeeefbf98084083c1370a107872fc7f4a2df42f100989dea873cb4128f376d5e4af6be43fec21273359d9dbdb0
+ version: 14.17.12
+ resolution: "@types/node@npm:14.17.12"
+ checksum: 7efbce3781a0ea5d7a39bca3c5ed9c4e4d99fed3483fb2a89670aeb049cd9d25f1ddecd8fb58420fd92de371278721ddd6e3ad95c4f55992592f1ac5d1dedf98
languageName: node
linkType: hard
@@ -782,9 +799,10 @@ __metadata:
linkType: soft
"cacache@npm:^15.0.5":
- version: 15.2.0
- resolution: "cacache@npm:15.2.0"
+ version: 15.3.0
+ resolution: "cacache@npm:15.3.0"
dependencies:
+ "@npmcli/fs": ^1.0.0
"@npmcli/move-file": ^1.0.1
chownr: ^2.0.0
fs-minipass: ^2.0.0
@@ -802,7 +820,7 @@ __metadata:
ssri: ^8.0.1
tar: ^6.0.2
unique-filename: ^1.1.1
- checksum: 34d0fba6030dd3f1f9de4d9fb486cfa8f6ec836ab00d75b846b40c06f96e64898e781f715d19a2c357a601a899c339a44446f94dd328f173605af165a295dd29
+ checksum: a07327c27a4152c04eb0a831c63c00390d90f94d51bb80624a66f4e14a6b6360bbf02a84421267bd4d00ca73ac9773287d8d7169e8d2eafe378d2ce140579db8
languageName: node
linkType: hard
@@ -1109,7 +1127,7 @@ discord-akairo@NotEnoughUpdates/discord-akairo:
discord.js@NotEnoughUpdates/discord.js:
version: 13.2.0-dev
- resolution: "discord.js@https://github.com/NotEnoughUpdates/discord.js.git#commit=e0c7f18a5c43cce502cfb6578f0b74940afe4859"
+ resolution: "discord.js@https://github.com/NotEnoughUpdates/discord.js.git#commit=a1764c7ece9e6dc83484a1bf2f0ac9ca5a501d0a"
dependencies:
"@discordjs/builders": ^0.5.0
"@discordjs/collection": ^0.2.1
@@ -1119,7 +1137,7 @@ discord.js@NotEnoughUpdates/discord.js:
discord-api-types: ^0.22.0
node-fetch: ^2.6.1
ws: ^7.5.1
- checksum: 0a6839d548cbbbaa1ae12d7a712a9c94cef73c4cd2a76f094a9ab364fef020395cf8685238a4d71c91e53cf27512d0ce5daee06733fc58fa17ab26f8a614a501
+ checksum: 54d4a52cba0358317b9c1d2d1d55cdd66987a2489db3a7443dae5220f3a7f532fddf9cd5c8c1d6e8e2f6d1cdcd9b95cf6dc481208724f11d437ddd6c51dc4f4b
languageName: node
linkType: hard
@@ -1197,11 +1215,11 @@ discord.js@NotEnoughUpdates/discord.js:
linkType: hard
"esbuild@npm:^0.12.11":
- version: 0.12.22
- resolution: "esbuild@npm:0.12.22"
+ version: 0.12.23
+ resolution: "esbuild@npm:0.12.23"
bin:
esbuild: bin/esbuild
- checksum: db14cc10914d40a875da1b102cee7479ebe1b085cdc2deaa8e275468ada9bf3c6b793bd6004a031a9f2e34865fe629dc59030c5fe4820978f1cf071966aa2c5d
+ checksum: 9ae58a151d62888d9ded07bda113a7e343331aaf0ba651827883d0f270e94846cac3ac8cb28c055dfceb6c45fb648a20db70e65aa8afb03b8b87fb08fdfb4f90
languageName: node
linkType: hard
@@ -3076,8 +3094,8 @@ discord.js@NotEnoughUpdates/discord.js:
linkType: hard
"tar@npm:^6.0.2, tar@npm:^6.1.0, tar@npm:^6.1.2":
- version: 6.1.10
- resolution: "tar@npm:6.1.10"
+ version: 6.1.11
+ resolution: "tar@npm:6.1.11"
dependencies:
chownr: ^2.0.0
fs-minipass: ^2.0.0
@@ -3085,7 +3103,7 @@ discord.js@NotEnoughUpdates/discord.js:
minizlib: ^2.1.1
mkdirp: ^1.0.3
yallist: ^4.0.0
- checksum: 9e7ba4abc81a3095a5fc7a3e97a9f753103f5ce884c52431613f281954ec83d690e58f1ccad3cdd9eacdea901431f96f5f879dddc421f6b231994f6e7de07e1f
+ checksum: a04c07bb9e2d8f46776517d4618f2406fb977a74d914ad98b264fc3db0fe8224da5bec11e5f8902c5b9bcb8ace22d95fbe3c7b36b8593b7dfc8391a25898f32f
languageName: node
linkType: hard