aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/commands/_fake-command/ironmoon.ts4
-rw-r--r--src/commands/admin/channelPermissions.ts2
-rw-r--r--src/commands/config/autoPublishChannel.ts2
-rw-r--r--src/commands/config/blacklist.ts2
-rw-r--r--src/commands/config/disable.ts2
-rw-r--r--src/commands/config/muteRole.ts2
-rw-r--r--src/commands/config/prefix.ts2
-rw-r--r--src/commands/config/punishmentFooter.ts2
-rw-r--r--src/commands/config/welcomeChannel.ts2
-rw-r--r--src/commands/dev/__template.ts2
-rw-r--r--src/commands/dev/_testDB.ts25
-rw-r--r--src/commands/dev/eval.ts2
-rw-r--r--src/commands/dev/reload.ts2
-rw-r--r--src/commands/dev/say.ts4
-rw-r--r--src/commands/dev/servers.ts2
-rw-r--r--src/commands/dev/setLevel.ts5
-rw-r--r--src/commands/dev/sh.ts2
-rw-r--r--src/commands/dev/superUser.ts5
-rw-r--r--src/commands/dev/test.ts2
-rw-r--r--src/commands/fun/coinflip.ts2
-rw-r--r--src/commands/fun/dice.ts2
-rw-r--r--src/commands/fun/eightBall.ts2
-rw-r--r--src/commands/fun/minesweeper.ts2
-rw-r--r--src/commands/info/avatar.ts2
-rw-r--r--src/commands/info/botInfo.ts2
-rw-r--r--src/commands/info/color.ts2
-rw-r--r--src/commands/info/guildInfo.ts5
-rw-r--r--src/commands/info/help.ts2
-rw-r--r--src/commands/info/icon.ts2
-rw-r--r--src/commands/info/invite.ts2
-rw-r--r--src/commands/info/ping.ts4
-rw-r--r--src/commands/info/pronouns.ts2
-rw-r--r--src/commands/info/snowflakeInfo.ts2
-rw-r--r--src/commands/info/userInfo.ts2
-rw-r--r--src/commands/moderation/_lockdown.ts2
-rw-r--r--src/commands/moderation/ban.ts2
-rw-r--r--src/commands/moderation/kick.ts2
-rw-r--r--src/commands/moderation/modlog.ts2
-rw-r--r--src/commands/moderation/mute.ts2
-rw-r--r--src/commands/moderation/removeReactionEmoji.ts2
-rw-r--r--src/commands/moderation/role.ts2
-rw-r--r--src/commands/moderation/slowmode.ts2
-rw-r--r--src/commands/moderation/unban.ts9
-rw-r--r--src/commands/moderation/unmute.ts5
-rw-r--r--src/commands/moderation/warn.ts2
-rw-r--r--src/commands/moulberry-bush/capePerms.ts2
-rw-r--r--src/commands/moulberry-bush/giveawayPing.ts2
-rw-r--r--src/commands/moulberry-bush/level.ts2
-rw-r--r--src/commands/moulberry-bush/report.ts11
-rw-r--r--src/commands/moulberry-bush/rule.ts2
-rw-r--r--src/commands/skyblock-reborn/chooseColor.ts5
-rw-r--r--src/commands/utilities/decode.ts2
-rw-r--r--src/commands/utilities/hash.ts2
-rw-r--r--src/commands/utilities/price.ts2
-rw-r--r--src/commands/utilities/serverStatus.ts2
-rw-r--r--src/commands/utilities/uuid.ts2
-rw-r--r--src/commands/utilities/viewraw.ts2
-rw-r--r--src/commands/utilities/whoHasRole.ts2
-rw-r--r--src/inhibitors/blacklist/channelGlobalBlacklist.ts2
-rw-r--r--src/inhibitors/blacklist/channelGuildBlacklist.ts2
-rw-r--r--src/inhibitors/blacklist/guildBlacklist.ts2
-rw-r--r--src/inhibitors/blacklist/userGlobalBlacklist.ts2
-rw-r--r--src/inhibitors/blacklist/userGuildBlacklist.ts2
-rw-r--r--src/inhibitors/commands/globalDisabledCommand.ts2
-rw-r--r--src/inhibitors/commands/guildDisabledCommand.ts2
-rw-r--r--src/inhibitors/noCache.ts2
-rw-r--r--src/lib/extensions/discord-akairo/BushClient.ts24
-rw-r--r--src/lib/extensions/discord-akairo/BushClientUtil.ts2
-rw-r--r--src/lib/extensions/discord-akairo/BushCommand.ts4
-rw-r--r--src/lib/extensions/discord-akairo/BushCommandHandler.ts2
-rw-r--r--src/lib/extensions/discord-akairo/BushInhibitor.ts4
-rw-r--r--src/lib/extensions/discord.js/BushBaseGuildEmojiManager.d.ts9
-rw-r--r--src/lib/extensions/discord.js/BushChannel.d.ts23
-rw-r--r--src/lib/extensions/discord.js/BushChannelManager.d.ts9
-rw-r--r--src/lib/extensions/discord.js/BushClientUser.d.ts23
-rw-r--r--src/lib/extensions/discord.js/BushGuild.ts8
-rw-r--r--src/lib/extensions/discord.js/BushGuildManager.d.ts20
-rw-r--r--src/lib/extensions/discord.js/BushGuildMemberManager.d.ts15
-rw-r--r--src/lib/extensions/discord.js/BushMessage.ts2
-rw-r--r--src/lib/extensions/discord.js/BushUserManager.d.ts9
-rw-r--r--src/lib/models/ActivePunishment.ts41
-rw-r--r--src/lib/models/BaseModel.ts15
-rw-r--r--src/lib/models/Global.ts36
-rw-r--r--src/lib/models/Guild.ts98
-rw-r--r--src/lib/models/Level.ts20
-rw-r--r--src/lib/models/ModLog.ts41
-rw-r--r--src/lib/models/StickyRole.ts28
-rw-r--r--src/listeners/client/interactionCreate.ts2
-rw-r--r--src/listeners/client/ready.ts2
-rw-r--r--src/listeners/commands/commandBlocked.ts2
-rw-r--r--src/listeners/commands/commandError.ts2
-rw-r--r--src/listeners/commands/commandMissingPermissions.ts4
-rw-r--r--src/listeners/commands/commandStarted.ts2
-rw-r--r--src/listeners/commands/slashBlocked.ts2
-rw-r--r--src/listeners/commands/slashCommandError.ts2
-rw-r--r--src/listeners/commands/slashMissingPermissions.ts2
-rw-r--r--src/listeners/commands/slashStarted.ts2
-rw-r--r--src/listeners/guild/syncUnban.ts2
-rw-r--r--src/listeners/message/autoPublisher.ts2
-rw-r--r--src/listeners/message/automodCreate.ts2
-rw-r--r--src/listeners/message/automodUpdate.ts2
-rw-r--r--src/listeners/message/blacklistedFile.ts2
-rw-r--r--src/listeners/message/booster.ts2
-rw-r--r--src/listeners/message/directMessage.ts2
-rw-r--r--src/listeners/message/level.ts2
-rw-r--r--src/listeners/message/verbose.ts2
-rw-r--r--src/listeners/other/consoleListener.ts2
-rw-r--r--src/listeners/other/promiseRejection.ts2
-rw-r--r--src/listeners/other/uncaughtException.ts2
-rw-r--r--src/tasks/removeExpiredPunishements.ts6
-rw-r--r--src/tasks/updateCache.ts2
111 files changed, 521 insertions, 158 deletions
diff --git a/src/commands/_fake-command/ironmoon.ts b/src/commands/_fake-command/ironmoon.ts
index 500b384..8ca1f5b 100644
--- a/src/commands/_fake-command/ironmoon.ts
+++ b/src/commands/_fake-command/ironmoon.ts
@@ -8,13 +8,13 @@ export default class IronmoonCommand extends BushCommand {
completelyHide: true
});
}
- public condition(message: BushMessage): boolean {
+ public override condition(message: BushMessage): boolean {
return false;
if (message.content.toLowerCase().includes('ironmoon')) return true;
else return false;
}
- public async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
return await message.util.reply('Your message included the word ironmoon.');
}
}
diff --git a/src/commands/admin/channelPermissions.ts b/src/commands/admin/channelPermissions.ts
index 851e2ed..a13f07a 100644
--- a/src/commands/admin/channelPermissions.ts
+++ b/src/commands/admin/channelPermissions.ts
@@ -50,7 +50,7 @@ export default class ChannelPermissionsCommand extends BushCommand {
});
}
- public async exec(
+ public override async exec(
message: BushMessage,
{
target,
diff --git a/src/commands/config/autoPublishChannel.ts b/src/commands/config/autoPublishChannel.ts
index 8fa987b..3381dc2 100644
--- a/src/commands/config/autoPublishChannel.ts
+++ b/src/commands/config/autoPublishChannel.ts
@@ -38,7 +38,7 @@ export default class AutoPublishChannelCommand extends BushCommand {
});
}
- public async exec(message: BushMessage, { channel }: { channel: Channel }): Promise<unknown> {
+ public override async exec(message: BushMessage, { channel }: { channel: Channel }): Promise<unknown> {
const autoPublishChannels = await message.guild.getSetting('autoPublishChannels');
const newValue = util.addOrRemoveFromArray(
autoPublishChannels.includes(channel.id) ? 'remove' : 'add',
diff --git a/src/commands/config/blacklist.ts b/src/commands/config/blacklist.ts
index 150a1b7..78b0446 100644
--- a/src/commands/config/blacklist.ts
+++ b/src/commands/config/blacklist.ts
@@ -60,7 +60,7 @@ export default class BlacklistCommand extends BushCommand {
});
}
- public async exec(
+ public override async exec(
message: BushMessage | BushSlashMessage,
args: { action: 'blacklist' | 'unblacklist'; target: Channel | User | string; global: boolean }
): Promise<unknown> {
diff --git a/src/commands/config/disable.ts b/src/commands/config/disable.ts
index 5d2e4dd..a9318a5 100644
--- a/src/commands/config/disable.ts
+++ b/src/commands/config/disable.ts
@@ -59,7 +59,7 @@ export default class DisableCommand extends BushCommand {
blacklistedCommands = ['eval', 'disable'];
- public async exec(
+ public override async exec(
message: BushMessage | BushSlashMessage,
args: { action: 'enable' | 'disable'; command: BushCommand | string; global: boolean }
): Promise<unknown> {
diff --git a/src/commands/config/muteRole.ts b/src/commands/config/muteRole.ts
index b6e8a81..dee5322 100644
--- a/src/commands/config/muteRole.ts
+++ b/src/commands/config/muteRole.ts
@@ -37,7 +37,7 @@ export default class MuteRoleCommand extends BushCommand {
});
}
- async exec(message: BushMessage | BushSlashMessage, args: { role: Role }): Promise<void> {
+ override async exec(message: BushMessage | BushSlashMessage, args: { role: Role }): Promise<void> {
await message.guild.setSetting('muteRole', args.role.id);
await message.util.send({
content: `${util.emojis.success} Changed the server's mute role to <@&${args.role.id}>.`,
diff --git a/src/commands/config/prefix.ts b/src/commands/config/prefix.ts
index 9c1ce92..9f80633 100644
--- a/src/commands/config/prefix.ts
+++ b/src/commands/config/prefix.ts
@@ -36,7 +36,7 @@ export default class PrefixCommand extends BushCommand {
});
}
- async exec(message: BushMessage | BushSlashMessage, args: { prefix?: string }): Promise<unknown> {
+ override async exec(message: BushMessage | BushSlashMessage, args: { prefix?: string }): Promise<unknown> {
const oldPrefix = await message.guild.getSetting('prefix');
await message.guild.setSetting('prefix', args.prefix ?? client.config.prefix);
if (args.prefix) {
diff --git a/src/commands/config/punishmentFooter.ts b/src/commands/config/punishmentFooter.ts
index eeac6c1..d8daf77 100644
--- a/src/commands/config/punishmentFooter.ts
+++ b/src/commands/config/punishmentFooter.ts
@@ -38,7 +38,7 @@ export default class PunishmentFooterCommand extends BushCommand {
});
}
- async exec(message: BushMessage | BushSlashMessage, args: { ending: string }): Promise<unknown> {
+ override async exec(message: BushMessage | BushSlashMessage, args: { ending: string }): Promise<unknown> {
await message.guild.setSetting('punishmentEnding', args.ending || null);
if (args.ending)
return await message.util.send({
diff --git a/src/commands/config/welcomeChannel.ts b/src/commands/config/welcomeChannel.ts
index 3db9e74..a662802 100644
--- a/src/commands/config/welcomeChannel.ts
+++ b/src/commands/config/welcomeChannel.ts
@@ -36,7 +36,7 @@ export default class WelcomeChannelCommand extends BushCommand {
userPermissions: ['SEND_MESSAGES', 'MANAGE_GUILD']
});
}
- public async exec(message: BushMessage | BushSlashMessage, args: { channel: Channel }): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage, args: { channel: Channel }): Promise<unknown> {
const oldChannel = await message.guild.getSetting('welcomeChannel');
await message.guild.setSetting('welcomeChannel', args.channel.id ?? undefined);
if (args.channel) {
diff --git a/src/commands/dev/__template.ts b/src/commands/dev/__template.ts
index 35c57db..949e04e 100644
--- a/src/commands/dev/__template.ts
+++ b/src/commands/dev/__template.ts
@@ -55,7 +55,7 @@ export default class TemplateCommand extends BushCommand {
userPermissions: ['SEND_MESSAGES']
});
}
- public async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
return await message.util.reply(`${util.emojis.error} Do not use the template command.`);
}
}
diff --git a/src/commands/dev/_testDB.ts b/src/commands/dev/_testDB.ts
new file mode 100644
index 0000000..e1fddb4
--- /dev/null
+++ b/src/commands/dev/_testDB.ts
@@ -0,0 +1,25 @@
+// import { BushCommand, BushSlashMessage, Global } from '@lib';
+// import { Message } from 'discord.js';
+// import { inspect } from 'util';
+
+// export default class TestDurationCommand extends BushCommand {
+// public constructor() {
+// super('db', {
+// aliases: ['db'],
+// category: 'dev',
+// description: {
+// content: '',
+// usage: '',
+// examples: ['']
+// },
+// slash: false,
+// hidden: true,
+// ownerOnly: true,
+// completelyHide: true
+// });
+// }
+
+// override async exec(message: Message | BushSlashMessage): Promise<unknown> {
+// return await message.util.reply(await util.codeblock(inspect((await Global.findOne()).environment), 2000, 'js'));
+// }
+// }
diff --git a/src/commands/dev/eval.ts b/src/commands/dev/eval.ts
index dbdfc4b..1475173 100644
--- a/src/commands/dev/eval.ts
+++ b/src/commands/dev/eval.ts
@@ -43,7 +43,7 @@ export default class EvalCommand extends BushCommand {
});
}
- public async exec(
+ public override async exec(
message: BushMessage | BushSlashMessage,
args: {
sel_depth: number;
diff --git a/src/commands/dev/reload.ts b/src/commands/dev/reload.ts
index de12e34..4f11a81 100644
--- a/src/commands/dev/reload.ts
+++ b/src/commands/dev/reload.ts
@@ -31,7 +31,7 @@ export default class ReloadCommand extends BushCommand {
});
}
- public async exec(message: BushMessage | BushSlashMessage /* { fast }: { fast: boolean } */): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage /* { fast }: { fast: boolean } */): Promise<unknown> {
if (!message.author.isOwner())
return await message.util.reply(`${util.emojis.error} Only my developers can run this command.`);
diff --git a/src/commands/dev/say.ts b/src/commands/dev/say.ts
index 0776f1b..f0a7cbf 100644
--- a/src/commands/dev/say.ts
+++ b/src/commands/dev/say.ts
@@ -26,7 +26,7 @@ export default class SayCommand extends BushCommand {
});
}
- public async exec(message: BushMessage, { say }: { say: string }): Promise<unknown> {
+ public override async exec(message: BushMessage, { say }: { say: string }): Promise<unknown> {
if (!message.author.isOwner())
return await message.util.reply(`${util.emojis.error} Only my developers can run this command.`);
@@ -34,7 +34,7 @@ export default class SayCommand extends BushCommand {
await message.util.send({ content: say, allowedMentions: AllowedMentions.none() });
}
- public async execSlash(message: AkairoMessage, { content }: { content: string }): Promise<unknown> {
+ public override async execSlash(message: AkairoMessage, { content }: { content: string }): Promise<unknown> {
if (!client.config.owners.includes(message.author.id)) {
return await message.interaction.reply({
content: `${util.emojis.error} Only my developers can run this command.`,
diff --git a/src/commands/dev/servers.ts b/src/commands/dev/servers.ts
index 7b147b9..d8799f5 100644
--- a/src/commands/dev/servers.ts
+++ b/src/commands/dev/servers.ts
@@ -17,7 +17,7 @@ export default class ServersCommand extends BushCommand {
});
}
- public async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
const maxLength = 10;
const guilds = [...client.guilds.cache.sort((a, b) => (a.memberCount < b.memberCount ? 1 : -1)).values()];
const chunkedGuilds: Guild[][] = [];
diff --git a/src/commands/dev/setLevel.ts b/src/commands/dev/setLevel.ts
index 4d08345..6603fcf 100644
--- a/src/commands/dev/setLevel.ts
+++ b/src/commands/dev/setLevel.ts
@@ -48,7 +48,10 @@ export default class SetLevelCommand extends BushCommand {
});
}
- async exec(message: BushMessage | BushSlashMessage, { user, level }: { user: User; level: number }): Promise<unknown> {
+ override async exec(
+ message: BushMessage | BushSlashMessage,
+ { user, level }: { user: User; level: number }
+ ): Promise<unknown> {
if (!message.author.isOwner())
return await message.util.reply(`${util.emojis.error} Only my developers can run this command.`);
diff --git a/src/commands/dev/sh.ts b/src/commands/dev/sh.ts
index b8c8379..7f048c0 100644
--- a/src/commands/dev/sh.ts
+++ b/src/commands/dev/sh.ts
@@ -36,7 +36,7 @@ export default class ShCommand extends BushCommand {
});
}
- public async exec(message: BushMessage | BushSlashMessage, { command }: { command: string }): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage, { command }: { command: string }): Promise<unknown> {
if (!client.config.owners.includes(message.author.id))
return await message.util.reply(`${util.emojis.error} Only my developers can run this command.`);
const input = clean(command);
diff --git a/src/commands/dev/superUser.ts b/src/commands/dev/superUser.ts
index eade861..22fa53f 100644
--- a/src/commands/dev/superUser.ts
+++ b/src/commands/dev/superUser.ts
@@ -37,7 +37,10 @@ export default class SuperUserCommand extends BushCommand {
};
return { action, user };
}
- public async exec(message: BushMessage | BushSlashMessage, args: { action: 'add' | 'remove'; user: User }): Promise<unknown> {
+ public override async exec(
+ message: BushMessage | BushSlashMessage,
+ args: { action: 'add' | 'remove'; user: User }
+ ): Promise<unknown> {
if (!message.author.isOwner())
return await message.util.reply(`${util.emojis.error} Only my developers can run this command.`);
diff --git a/src/commands/dev/test.ts b/src/commands/dev/test.ts
index 6b49dce..0029a3a 100644
--- a/src/commands/dev/test.ts
+++ b/src/commands/dev/test.ts
@@ -30,7 +30,7 @@ export default class TestCommand extends BushCommand {
}
// eslint-disable-next-line require-await
- public async exec(message: BushMessage, args: { feature: string }): Promise<unknown> {
+ public override async exec(message: BushMessage, args: { feature: string }): Promise<unknown> {
const responses = [
'Yes master.',
'Test it your self bitch, I am hungry.',
diff --git a/src/commands/fun/coinflip.ts b/src/commands/fun/coinflip.ts
index 68484bb..e0892b7 100644
--- a/src/commands/fun/coinflip.ts
+++ b/src/commands/fun/coinflip.ts
@@ -14,7 +14,7 @@ export default class CoinFlipCommand extends BushCommand {
});
}
- public async exec(message: BushMessage | BushSlashMessage): Promise<void> {
+ public override async exec(message: BushMessage | BushSlashMessage): Promise<void> {
const random = Math.random();
let result: string;
const fall = message.author.id === '322862723090219008' ? 0.1 : 0.001;
diff --git a/src/commands/fun/dice.ts b/src/commands/fun/dice.ts
index 46b159b..241f1d2 100644
--- a/src/commands/fun/dice.ts
+++ b/src/commands/fun/dice.ts
@@ -15,7 +15,7 @@ export default class EightBallCommand extends BushCommand {
});
}
- public async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
const responses = ['1', '2', '3', '4', '5', '6'];
const answer = responses[Math.floor(Math.random() * responses.length)];
return await message.util.reply(`You rolled a **${answer}**.`);
diff --git a/src/commands/fun/eightBall.ts b/src/commands/fun/eightBall.ts
index 7b7d39c..efaaff5 100644
--- a/src/commands/fun/eightBall.ts
+++ b/src/commands/fun/eightBall.ts
@@ -35,7 +35,7 @@ export default class EightBallCommand extends BushCommand {
});
}
- public async exec(message: BushMessage | BushSlashMessage): Promise<void> {
+ public override async exec(message: BushMessage | BushSlashMessage): Promise<void> {
const responses = [
'It is certain',
'Without a doubt',
diff --git a/src/commands/fun/minesweeper.ts b/src/commands/fun/minesweeper.ts
index 2b46e34..2bec1e9 100644
--- a/src/commands/fun/minesweeper.ts
+++ b/src/commands/fun/minesweeper.ts
@@ -91,7 +91,7 @@ export default class MinesweeperCommand extends BushCommand {
});
}
- public async exec(
+ public override async exec(
message: BushMessage | BushSlashMessage,
{
rows,
diff --git a/src/commands/info/avatar.ts b/src/commands/info/avatar.ts
index eefdc02..37d2256 100644
--- a/src/commands/info/avatar.ts
+++ b/src/commands/info/avatar.ts
@@ -35,7 +35,7 @@ export default class AvatarCommand extends BushCommand {
});
}
- async exec(message: BushMessage | BushSlashMessage, { user }: { user: User }): Promise<void> {
+ override async exec(message: BushMessage | BushSlashMessage, { user }: { user: User }): Promise<void> {
user = user ?? message.author;
const embed = new MessageEmbed()
diff --git a/src/commands/info/botInfo.ts b/src/commands/info/botInfo.ts
index e47984b..c89c356 100644
--- a/src/commands/info/botInfo.ts
+++ b/src/commands/info/botInfo.ts
@@ -17,7 +17,7 @@ export default class BotInfoCommand extends BushCommand {
});
}
- public async exec(message: BushMessage | BushSlashMessage): Promise<void> {
+ public override async exec(message: BushMessage | BushSlashMessage): Promise<void> {
const developers = (await util.mapIDs(client.config.owners)).map((u) => u?.tag).join('\n');
const currentCommit = (await util.shell('git rev-parse HEAD')).stdout.replace('\n', '');
let repoUrl = (await util.shell('git remote get-url origin')).stdout.replace('\n', '');
diff --git a/src/commands/info/color.ts b/src/commands/info/color.ts
index e995d79..7ceb37f 100644
--- a/src/commands/info/color.ts
+++ b/src/commands/info/color.ts
@@ -40,7 +40,7 @@ export default class ColorCommand extends BushCommand {
return color.substr(4, color.length - 5);
}
- public async exec(
+ public override async exec(
message: BushMessage | BushSlashMessage,
args: { color: string | BushRole | BushGuildMember }
): Promise<unknown> {
diff --git a/src/commands/info/guildInfo.ts b/src/commands/info/guildInfo.ts
index 6ce4d76..2cdf3d5 100644
--- a/src/commands/info/guildInfo.ts
+++ b/src/commands/info/guildInfo.ts
@@ -36,7 +36,10 @@ export default class GuildInfoCommand extends BushCommand {
});
}
- public async exec(message: BushMessage | BushSlashMessage, args: { guild: Guild | bigint | GuildPreview }): Promise<unknown> {
+ public override async exec(
+ message: BushMessage | BushSlashMessage,
+ args: { guild: Guild | bigint | GuildPreview }
+ ): Promise<unknown> {
if (!args?.guild && !message.guild) {
return await message.util.reply(
`${util.emojis.error} You must either provide an server to provide info about or run this command in a server.`
diff --git a/src/commands/info/help.ts b/src/commands/info/help.ts
index 458b7d0..691051c 100644
--- a/src/commands/info/help.ts
+++ b/src/commands/info/help.ts
@@ -43,7 +43,7 @@ export default class HelpCommand extends BushCommand {
});
}
- public async exec(
+ public override async exec(
message: BushMessage | BushSlashMessage,
args: { command: BushCommand | string; showHidden?: boolean }
): Promise<unknown> {
diff --git a/src/commands/info/icon.ts b/src/commands/info/icon.ts
index 598cd14..582494c 100644
--- a/src/commands/info/icon.ts
+++ b/src/commands/info/icon.ts
@@ -17,7 +17,7 @@ export default class IconCommand extends BushCommand {
});
}
- async exec(message: BushMessage | BushSlashMessage): Promise<void> {
+ override async exec(message: BushMessage | BushSlashMessage): Promise<void> {
const embed = new MessageEmbed()
.setTimestamp()
.setColor(util.colors.default)
diff --git a/src/commands/info/invite.ts b/src/commands/info/invite.ts
index a2128b3..384c59e 100644
--- a/src/commands/info/invite.ts
+++ b/src/commands/info/invite.ts
@@ -18,7 +18,7 @@ export default class InviteCommand extends BushCommand {
});
}
- public async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
if (client.config.isDevelopment) return await message.util.reply(`${util.emojis.error} The dev bot cannot be invited.`);
const ButtonRow = new MessageActionRow().addComponents(
new MessageButton({
diff --git a/src/commands/info/ping.ts b/src/commands/info/ping.ts
index 550c3c7..5f2220c 100644
--- a/src/commands/info/ping.ts
+++ b/src/commands/info/ping.ts
@@ -17,7 +17,7 @@ export default class PingCommand extends BushCommand {
});
}
- public async exec(message: BushMessage): Promise<void> {
+ public override async exec(message: BushMessage): Promise<void> {
const sentMessage = (await message.util.send('Pong!')) as Message;
const timestamp: number = message.editedTimestamp ? message.editedTimestamp : message.createdTimestamp;
const botLatency = `${'```'}\n ${Math.round(sentMessage.createdTimestamp - timestamp)}ms ${'```'}`;
@@ -35,7 +35,7 @@ export default class PingCommand extends BushCommand {
});
}
- public async execSlash(message: BushSlashMessage): Promise<void> {
+ public override async execSlash(message: BushSlashMessage): Promise<void> {
const timestamp1 = message.interaction.createdTimestamp;
await message.interaction.reply('Pong!');
const timestamp2 = await message.interaction.fetchReply().then((m) => (m as Message).createdTimestamp);
diff --git a/src/commands/info/pronouns.ts b/src/commands/info/pronouns.ts
index 82ee04f..6f2b074 100644
--- a/src/commands/info/pronouns.ts
+++ b/src/commands/info/pronouns.ts
@@ -60,7 +60,7 @@ export default class PronounsCommand extends BushCommand {
slash: true
});
}
- async exec(message: Message | BushSlashMessage, args: { user?: User }): Promise<unknown> {
+ override async exec(message: Message | BushSlashMessage, args: { user?: User }): Promise<unknown> {
const user = args.user || message.author;
const author = user.id === message.author.id;
try {
diff --git a/src/commands/info/snowflakeInfo.ts b/src/commands/info/snowflakeInfo.ts
index b6b9e16..f293219 100644
--- a/src/commands/info/snowflakeInfo.ts
+++ b/src/commands/info/snowflakeInfo.ts
@@ -52,7 +52,7 @@ export default class SnowflakeInfoCommand extends BushCommand {
]
});
}
- public async exec(message: BushMessage | BushSlashMessage, args: { snowflake: bigint }): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage, args: { snowflake: bigint }): Promise<unknown> {
const snowflake = `${args.snowflake}` as Snowflake;
const snowflakeEmbed = new MessageEmbed().setTitle('Unknown :snowflake:').setColor(util.colors.default);
diff --git a/src/commands/info/userInfo.ts b/src/commands/info/userInfo.ts
index cecf5ec..d9922d0 100644
--- a/src/commands/info/userInfo.ts
+++ b/src/commands/info/userInfo.ts
@@ -40,7 +40,7 @@ export default class UserInfoCommand extends BushCommand {
});
}
- public async exec(message: BushMessage | BushSlashMessage, args: { user: GuildMember }): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage, args: { user: GuildMember }): Promise<unknown> {
const user = args?.user || message.member;
const emojis = [];
const superUsers = client.cache.global.superUsers;
diff --git a/src/commands/moderation/_lockdown.ts b/src/commands/moderation/_lockdown.ts
index df5a9b4..374e8f1 100644
--- a/src/commands/moderation/_lockdown.ts
+++ b/src/commands/moderation/_lockdown.ts
@@ -31,7 +31,7 @@ export default class LockdownCommand extends BushCommand {
userPermissions: ['SEND_MESSAGES']
});
}
- public async exec(message: BushMessage | BushSlashMessage, { all }: { all: boolean }): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage, { all }: { all: boolean }): Promise<unknown> {
return await message.util.reply('no');
if (!all) {
if (!['GUILD_TEXT', 'GUILD_NEWS'].includes(message.channel.type))
diff --git a/src/commands/moderation/ban.ts b/src/commands/moderation/ban.ts
index 9239f2a..cfa3e31 100644
--- a/src/commands/moderation/ban.ts
+++ b/src/commands/moderation/ban.ts
@@ -80,7 +80,7 @@ export default class BanCommand extends BushCommand {
userPermissions: ['BAN_MEMBERS']
});
}
- async exec(
+ override async exec(
message: BushMessage | BushSlashMessage,
{
user,
diff --git a/src/commands/moderation/kick.ts b/src/commands/moderation/kick.ts
index 5fd83b7..c425124 100644
--- a/src/commands/moderation/kick.ts
+++ b/src/commands/moderation/kick.ts
@@ -55,7 +55,7 @@ export default class KickCommand extends BushCommand {
});
}
- async exec(
+ override async exec(
message: BushMessage | BushSlashMessage,
{ user, reason, force }: { user: BushUser; reason?: string; force: boolean }
): Promise<unknown> {
diff --git a/src/commands/moderation/modlog.ts b/src/commands/moderation/modlog.ts
index 4850a4d..8f727a5 100644
--- a/src/commands/moderation/modlog.ts
+++ b/src/commands/moderation/modlog.ts
@@ -46,7 +46,7 @@ export default class ModlogCommand extends BushCommand {
return modLog.join(`\n`);
}
- async exec(message: BushMessage | BushSlashMessage, { search }: { search: BushUser | string }): Promise<unknown> {
+ override async exec(message: BushMessage | BushSlashMessage, { search }: { search: BushUser | string }): Promise<unknown> {
const foundUser = search instanceof User ? search : await util.resolveUserAsync(search);
if (foundUser) {
const logs = await ModLog.findAll({
diff --git a/src/commands/moderation/mute.ts b/src/commands/moderation/mute.ts
index 7f3edbb..df8e235 100644
--- a/src/commands/moderation/mute.ts
+++ b/src/commands/moderation/mute.ts
@@ -56,7 +56,7 @@ export default class MuteCommand extends BushCommand {
userPermissions: ['MANAGE_MESSAGES']
});
}
- async exec(
+ public override async exec(
message: BushMessage | BushSlashMessage,
{ user, reason, force }: { user: BushUser; reason?: { duration: number; contentWithoutTime: string }; force: boolean }
): Promise<unknown> {
diff --git a/src/commands/moderation/removeReactionEmoji.ts b/src/commands/moderation/removeReactionEmoji.ts
index de5e8ce..075b822 100644
--- a/src/commands/moderation/removeReactionEmoji.ts
+++ b/src/commands/moderation/removeReactionEmoji.ts
@@ -36,7 +36,7 @@ export default class RemoveReactionEmojiCommand extends BushCommand {
});
}
- public async exec(
+ public override async exec(
message: BushMessage,
{ messageToRemoveFrom, emoji }: { messageToRemoveFrom: BushMessage; emoji: Emoji | BigInt }
): Promise<unknown> {
diff --git a/src/commands/moderation/role.ts b/src/commands/moderation/role.ts
index bd8cf8d..1371ee8 100644
--- a/src/commands/moderation/role.ts
+++ b/src/commands/moderation/role.ts
@@ -90,7 +90,7 @@ export default class RoleCommand extends BushCommand {
});
}
- public async exec(
+ public override async exec(
message: BushMessage | BushSlashMessage,
{ action, user, role, duration }: { action: 'add' | 'remove'; user: BushGuildMember; role: BushRole; duration: number }
): Promise<unknown> {
diff --git a/src/commands/moderation/slowmode.ts b/src/commands/moderation/slowmode.ts
index 441a0ac..fd3aec6 100644
--- a/src/commands/moderation/slowmode.ts
+++ b/src/commands/moderation/slowmode.ts
@@ -48,7 +48,7 @@ export default class SlowModeCommand extends BushCommand {
});
}
- public async exec(
+ public override async exec(
message: BushMessage | BushSlashMessage,
{
length,
diff --git a/src/commands/moderation/unban.ts b/src/commands/moderation/unban.ts
index 8aa9ef0..522c715 100644
--- a/src/commands/moderation/unban.ts
+++ b/src/commands/moderation/unban.ts
@@ -1,4 +1,4 @@
-import { AllowedMentions, BushCommand, BushMessage, BushSlashMessage } from '@lib';
+import { AllowedMentions, BushCommand, BushMessage, BushSlashMessage, BushUser } from '@lib';
import { User } from 'discord.js';
export default class UnbanCommand extends BushCommand {
@@ -51,9 +51,12 @@ export default class UnbanCommand extends BushCommand {
userPermissions: ['BAN_MEMBERS']
});
}
- async exec(message: BushMessage | BushSlashMessage, { user, reason }: { user: User; reason?: string }): Promise<unknown> {
+ override async exec(
+ message: BushMessage | BushSlashMessage,
+ { user, reason }: { user: BushUser; reason?: string }
+ ): Promise<unknown> {
if (!(user instanceof User)) {
- user = util.resolveUser(user, client.users.cache);
+ user = util.resolveUser(user, client.users.cache) as BushUser;
}
const responseCode = await message.guild.unban({
user,
diff --git a/src/commands/moderation/unmute.ts b/src/commands/moderation/unmute.ts
index 528317c..6cdb08b 100644
--- a/src/commands/moderation/unmute.ts
+++ b/src/commands/moderation/unmute.ts
@@ -50,7 +50,10 @@ export default class UnmuteCommand extends BushCommand {
userPermissions: ['MANAGE_MESSAGES']
});
}
- async exec(message: BushMessage | BushSlashMessage, { user, reason }: { user: BushUser; reason?: string }): Promise<unknown> {
+ override async exec(
+ message: BushMessage | BushSlashMessage,
+ { user, reason }: { user: BushUser; reason?: string }
+ ): Promise<unknown> {
const error = util.emojis.error;
const member = message.guild.members.cache.get(user.id) as BushGuildMember;
const canModerateResponse = util.moderationPermissionCheck(message.member, member, 'unmute');
diff --git a/src/commands/moderation/warn.ts b/src/commands/moderation/warn.ts
index 3f9e9b5..1067033 100644
--- a/src/commands/moderation/warn.ts
+++ b/src/commands/moderation/warn.ts
@@ -54,7 +54,7 @@ export default class WarnCommand extends BushCommand {
userPermissions: ['MANAGE_MESSAGES']
});
}
- public async exec(
+ public override async exec(
message: BushMessage | BushSlashMessage,
{ user, reason, force }: { user: BushUser; reason: string; force: boolean }
): Promise<unknown> {
diff --git a/src/commands/moulberry-bush/capePerms.ts b/src/commands/moulberry-bush/capePerms.ts
index 7a021ed..eb1ab89 100644
--- a/src/commands/moulberry-bush/capePerms.ts
+++ b/src/commands/moulberry-bush/capePerms.ts
@@ -37,7 +37,7 @@ export default class CapePermissionsCommand extends BushCommand {
});
}
- public async exec(message: BushMessage | BushSlashMessage, args: { ign: string }): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage, args: { ign: string }): Promise<unknown> {
interface Capeperms {
success: boolean;
perms: User[];
diff --git a/src/commands/moulberry-bush/giveawayPing.ts b/src/commands/moulberry-bush/giveawayPing.ts
index 269c33f..4abc6ab 100644
--- a/src/commands/moulberry-bush/giveawayPing.ts
+++ b/src/commands/moulberry-bush/giveawayPing.ts
@@ -23,7 +23,7 @@ export default class GiveawayPingCommand extends BushCommand {
});
}
- public async exec(message: BushMessage): Promise<unknown> {
+ public override async exec(message: BushMessage): Promise<unknown> {
if (!message.member.permissions.has('MANAGE_GUILD'))
await message.util.reply(`${util.emojis.error} You are missing the \`manage server\` permission.`);
diff --git a/src/commands/moulberry-bush/level.ts b/src/commands/moulberry-bush/level.ts
index 86ab985..fef4538 100644
--- a/src/commands/moulberry-bush/level.ts
+++ b/src/commands/moulberry-bush/level.ts
@@ -136,7 +136,7 @@ export default class LevelCommand extends BushCommand {
}
}
- async exec(message: BushMessage | BushSlashMessage, { user }: { user?: BushUser }): Promise<void> {
+ override async exec(message: BushMessage | BushSlashMessage, { user }: { user?: BushUser }): Promise<void> {
// await message.reply(
// new MessageAttachment(
// await this.getImage(user || message.author),
diff --git a/src/commands/moulberry-bush/report.ts b/src/commands/moulberry-bush/report.ts
index 2ee02bd..e91420b 100644
--- a/src/commands/moulberry-bush/report.ts
+++ b/src/commands/moulberry-bush/report.ts
@@ -1,6 +1,6 @@
-import { GuildMember, MessageEmbed, TextChannel } from 'discord.js';
+import { GuildMember, MessageEmbed } from 'discord.js';
import moment from 'moment';
-import { AllowedMentions, BushCommand, BushMessage } from '../../lib';
+import { AllowedMentions, BushCommand, BushMessage, BushTextChannel } from '../../lib';
export default class ReportCommand extends BushCommand {
public constructor() {
@@ -55,7 +55,10 @@ export default class ReportCommand extends BushCommand {
});
}
- public async exec(message: BushMessage, { member, evidence }: { member: GuildMember; evidence: string }): Promise<unknown> {
+ public override async exec(
+ message: BushMessage,
+ { member, evidence }: { member: GuildMember; evidence: string }
+ ): Promise<unknown> {
if (message.guild.id != client.consts.mappings.guilds.bush)
return await message.util.reply(`${util.emojis.error} This command can only be run in Moulberry's bush.`);
if (!member) return await message.util.reply(`${util.emojis.error} Choose someone to report`);
@@ -103,7 +106,7 @@ export default class ReportCommand extends BushCommand {
reportEmbed.addField('Attachment', message.attachments.first().url);
}
}
- const reportChannel = <TextChannel>client.channels.cache.get('782972723654688848');
+ const reportChannel = client.channels.cache.get('782972723654688848') as unknown as BushTextChannel;
await reportChannel.send({ embeds: [reportEmbed] }).then(async (ReportMessage) => {
try {
await ReportMessage.react(util.emojis.success);
diff --git a/src/commands/moulberry-bush/rule.ts b/src/commands/moulberry-bush/rule.ts
index 41dd8de..eb767a8 100644
--- a/src/commands/moulberry-bush/rule.ts
+++ b/src/commands/moulberry-bush/rule.ts
@@ -103,7 +103,7 @@ export default class RuleCommand extends BushCommand {
});
}
- public async exec(message: BushMessage, { rule, user }: { rule: undefined | number; user: User }): Promise<unknown> {
+ public override async exec(message: BushMessage, { rule, user }: { rule: undefined | number; user: User }): Promise<unknown> {
const rulesEmbed = new MessageEmbed()
.setColor('#ef3929')
.setFooter(`Triggered by ${message.author.tag}`, message.author.avatarURL({ dynamic: true }))
diff --git a/src/commands/skyblock-reborn/chooseColor.ts b/src/commands/skyblock-reborn/chooseColor.ts
index 9b4b7c9..3814670 100644
--- a/src/commands/skyblock-reborn/chooseColor.ts
+++ b/src/commands/skyblock-reborn/chooseColor.ts
@@ -118,7 +118,10 @@ export default class ChooseColorCommand extends BushCommand {
});
}
- public async exec(message: BushMessage | BushSlashMessage, args: { color: Role | RoleResolvable }): Promise<unknown> {
+ public override async exec(
+ message: BushMessage | BushSlashMessage,
+ args: { color: Role | RoleResolvable }
+ ): Promise<unknown> {
if (message.guild.id != client.consts.mappings.guilds.sbr) {
return await message.util.reply(`${util.emojis.error} This command can only be run in Skyblock: Reborn.`);
}
diff --git a/src/commands/utilities/decode.ts b/src/commands/utilities/decode.ts
index cab23d8..3fb340d 100644
--- a/src/commands/utilities/decode.ts
+++ b/src/commands/utilities/decode.ts
@@ -88,7 +88,7 @@ export default class DecodeCommand extends BushCommand {
});
}
- public async exec(
+ public override async exec(
message: BushMessage | AkairoMessage,
{ from, to, data }: { from: BufferEncoding; to: BufferEncoding; data: string }
): Promise<unknown> {
diff --git a/src/commands/utilities/hash.ts b/src/commands/utilities/hash.ts
index fcf2da3..633a263 100644
--- a/src/commands/utilities/hash.ts
+++ b/src/commands/utilities/hash.ts
@@ -26,7 +26,7 @@ export default class HashCommand extends BushCommand {
});
}
- public async exec(message: BushMessage, { url }: { url: string }): Promise<void> {
+ public override async exec(message: BushMessage, { url }: { url: string }): Promise<void> {
try {
const req = await got.get(url);
const rawHash = crypto.createHash('md5');
diff --git a/src/commands/utilities/price.ts b/src/commands/utilities/price.ts
index 38cd8ca..a68c01d 100644
--- a/src/commands/utilities/price.ts
+++ b/src/commands/utilities/price.ts
@@ -97,7 +97,7 @@ export default class PriceCommand extends BushCommand {
});
}
- public async exec(message: BushMessage, { item, strict }: { item: string; strict: boolean }): Promise<unknown> {
+ public override async exec(message: BushMessage, { item, strict }: { item: string; strict: boolean }): Promise<unknown> {
const errors = new Array<string>();
const [bazaar, currentLowestBIN, averageLowestBIN, auctionAverages] = (
diff --git a/src/commands/utilities/serverStatus.ts b/src/commands/utilities/serverStatus.ts
index b9d6136..02db638 100644
--- a/src/commands/utilities/serverStatus.ts
+++ b/src/commands/utilities/serverStatus.ts
@@ -19,7 +19,7 @@ export default class ServerStatusCommand extends BushCommand {
});
}
- public async exec(message: BushMessage): Promise<void> {
+ public override async exec(message: BushMessage): Promise<void> {
const msgEmbed: MessageEmbed = new MessageEmbed()
.setTitle('Server status')
.setDescription(`Checking server:\n${util.emojis.loading}`)
diff --git a/src/commands/utilities/uuid.ts b/src/commands/utilities/uuid.ts
index 02ca506..06856d9 100644
--- a/src/commands/utilities/uuid.ts
+++ b/src/commands/utilities/uuid.ts
@@ -29,7 +29,7 @@ export default class UuidCommand extends BushCommand {
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- public async exec(message: BushMessage, { ign }: { ign: { match: any[]; matches: any[] } }): Promise<unknown> {
+ public override async exec(message: BushMessage, { ign }: { ign: { match: any[]; matches: any[] } }): Promise<unknown> {
if (!ign) return await message.util.reply(`${util.emojis.error} Please enter a valid ign.`);
const readableIGN = ign.match[0];
try {
diff --git a/src/commands/utilities/viewraw.ts b/src/commands/utilities/viewraw.ts
index ca21b4b..46353ba 100644
--- a/src/commands/utilities/viewraw.ts
+++ b/src/commands/utilities/viewraw.ts
@@ -43,7 +43,7 @@ export default class ViewRawCommand extends BushCommand {
});
}
- public async exec(
+ public override async exec(
message: BushMessage | BushSlashMessage,
args: { message: Message | BigInt; channel: TextChannel | NewsChannel | DMChannel; json?: boolean }
): Promise<unknown> {
diff --git a/src/commands/utilities/whoHasRole.ts b/src/commands/utilities/whoHasRole.ts
index 4bd81bb..a6c4665 100644
--- a/src/commands/utilities/whoHasRole.ts
+++ b/src/commands/utilities/whoHasRole.ts
@@ -36,7 +36,7 @@ export default class WhoHasRoleCommand extends BushCommand {
userPermissions: ['SEND_MESSAGES']
});
}
- public async exec(message: BushMessage | BushSlashMessage, args: { role: Role }): Promise<unknown> {
+ public override async exec(message: BushMessage | BushSlashMessage, args: { role: Role }): Promise<unknown> {
const roleMembers = args.role.members.map((member) => `${member.user} (${Util.escapeMarkdown(member.user.tag)})`);
const chunkedRoleMembers = util.chunk(roleMembers, 30);
diff --git a/src/inhibitors/blacklist/channelGlobalBlacklist.ts b/src/inhibitors/blacklist/channelGlobalBlacklist.ts
index 28a2c5e..7a1d27d 100644
--- a/src/inhibitors/blacklist/channelGlobalBlacklist.ts
+++ b/src/inhibitors/blacklist/channelGlobalBlacklist.ts
@@ -9,7 +9,7 @@ export default class UserGlobalBlacklistInhibitor extends BushInhibitor {
});
}
- public exec(message: BushMessage | BushSlashMessage): boolean {
+ public override exec(message: BushMessage | BushSlashMessage): boolean {
if (!message.author) return false;
if (client.isOwner(message.author) || client.isSuperUser(message.author) || client.user.id === message.author.id)
return false;
diff --git a/src/inhibitors/blacklist/channelGuildBlacklist.ts b/src/inhibitors/blacklist/channelGuildBlacklist.ts
index 7fa4ccf..be338fe 100644
--- a/src/inhibitors/blacklist/channelGuildBlacklist.ts
+++ b/src/inhibitors/blacklist/channelGuildBlacklist.ts
@@ -9,7 +9,7 @@ export default class ChannelGuildBlacklistInhibitor extends BushInhibitor {
});
}
- public async exec(message: BushMessage | BushSlashMessage): Promise<boolean> {
+ public override async exec(message: BushMessage | BushSlashMessage): Promise<boolean> {
if (!message.author || !message.guild) return false;
if (client.isOwner(message.author) || client.isSuperUser(message.author) || client.user.id === message.author.id)
return false;
diff --git a/src/inhibitors/blacklist/guildBlacklist.ts b/src/inhibitors/blacklist/guildBlacklist.ts
index 5a2123c..afaae9d 100644
--- a/src/inhibitors/blacklist/guildBlacklist.ts
+++ b/src/inhibitors/blacklist/guildBlacklist.ts
@@ -9,7 +9,7 @@ export default class GuildBlacklistInhibitor extends BushInhibitor {
});
}
- public exec(message: BushMessage | BushSlashMessage): boolean {
+ public override exec(message: BushMessage | BushSlashMessage): boolean {
if (!message.guild) return false;
if (
message.author &&
diff --git a/src/inhibitors/blacklist/userGlobalBlacklist.ts b/src/inhibitors/blacklist/userGlobalBlacklist.ts
index d8964a4..1173d87 100644
--- a/src/inhibitors/blacklist/userGlobalBlacklist.ts
+++ b/src/inhibitors/blacklist/userGlobalBlacklist.ts
@@ -9,7 +9,7 @@ export default class UserGlobalBlacklistInhibitor extends BushInhibitor {
});
}
- public exec(message: BushMessage | BushSlashMessage): boolean {
+ public override exec(message: BushMessage | BushSlashMessage): boolean {
if (!message.author) return false;
if (client.isOwner(message.author) || client.isSuperUser(message.author) || client.user.id === message.author.id)
return false;
diff --git a/src/inhibitors/blacklist/userGuildBlacklist.ts b/src/inhibitors/blacklist/userGuildBlacklist.ts
index 0bc6749..95ba17a 100644
--- a/src/inhibitors/blacklist/userGuildBlacklist.ts
+++ b/src/inhibitors/blacklist/userGuildBlacklist.ts
@@ -9,7 +9,7 @@ export default class UserGuildBlacklistInhibitor extends BushInhibitor {
});
}
- public async exec(message: BushMessage | BushSlashMessage): Promise<boolean> {
+ public override async exec(message: BushMessage | BushSlashMessage): Promise<boolean> {
if (!message.author || !message.guild) return false;
if (client.isOwner(message.author) || client.isSuperUser(message.author) || client.user.id === message.author.id)
return false;
diff --git a/src/inhibitors/commands/globalDisabledCommand.ts b/src/inhibitors/commands/globalDisabledCommand.ts
index 2954393..4c85c3b 100644
--- a/src/inhibitors/commands/globalDisabledCommand.ts
+++ b/src/inhibitors/commands/globalDisabledCommand.ts
@@ -9,7 +9,7 @@ export default class DisabledGuildCommandInhibitor extends BushInhibitor {
});
}
- public async exec(message: BushMessage | BushSlashMessage, command: BushCommand): Promise<boolean> {
+ public override async exec(message: BushMessage | BushSlashMessage, command: BushCommand): Promise<boolean> {
if (message.author.isOwner()) return false;
if (client.cache.global.disabledCommands?.includes(command?.id)) {
client.console.debug(`disabledGlobalCommand blocked message.`);
diff --git a/src/inhibitors/commands/guildDisabledCommand.ts b/src/inhibitors/commands/guildDisabledCommand.ts
index d16bff7..b21e1ef 100644
--- a/src/inhibitors/commands/guildDisabledCommand.ts
+++ b/src/inhibitors/commands/guildDisabledCommand.ts
@@ -9,7 +9,7 @@ export default class DisabledGuildCommandInhibitor extends BushInhibitor {
});
}
- public async exec(message: BushMessage | BushSlashMessage, command: BushCommand): Promise<boolean> {
+ public override async exec(message: BushMessage | BushSlashMessage, command: BushCommand): Promise<boolean> {
if (!message.guild || !message.guild) return;
if (message.author.isOwner() || message.author.isSuperUser()) return false; // super users bypass guild disabled commands
diff --git a/src/inhibitors/noCache.ts b/src/inhibitors/noCache.ts
index d461076..6bb2001 100644
--- a/src/inhibitors/noCache.ts
+++ b/src/inhibitors/noCache.ts
@@ -9,7 +9,7 @@ export default class NoCacheInhibitor extends BushInhibitor {
});
}
- public async exec(message: BushMessage | BushSlashMessage): Promise<boolean> {
+ public override async exec(message: BushMessage | BushSlashMessage): Promise<boolean> {
if (client.isOwner(message.author)) return false;
for (const property in client.cache.global) {
if (!client.cache.global[property]) {
diff --git a/src/lib/extensions/discord-akairo/BushClient.ts b/src/lib/extensions/discord-akairo/BushClient.ts
index 7b270f6..4c2b940 100644
--- a/src/lib/extensions/discord-akairo/BushClient.ts
+++ b/src/lib/extensions/discord-akairo/BushClient.ts
@@ -34,12 +34,17 @@ import { BushConstants } from '../../utils/BushConstants';
import { BushLogger } from '../../utils/BushLogger';
import { Config } from '../../utils/Config';
import { BushApplicationCommand } from '../discord.js/BushApplicationCommand';
+import { BushBaseGuildEmojiManager } from '../discord.js/BushBaseGuildEmojiManager';
import { BushButtonInteraction } from '../discord.js/BushButtonInteraction';
import { BushCategoryChannel } from '../discord.js/BushCategoryChannel';
+import { BushChannel } from '../discord.js/BushChannel';
+import { BushChannelManager } from '../discord.js/BushChannelManager';
+import { BushClientUser } from '../discord.js/BushClientUser';
import { BushCommandInteraction } from '../discord.js/BushCommandInteraction';
import { BushDMChannel } from '../discord.js/BushDMChannel';
import { BushGuild } from '../discord.js/BushGuild';
import { BushGuildEmoji } from '../discord.js/BushGuildEmoji';
+import { BushGuildManager } from '../discord.js/BushGuildManager';
import { BushGuildMember } from '../discord.js/BushGuildMember';
import { BushMessage } from '../discord.js/BushMessage';
import { BushMessageReaction } from '../discord.js/BushMessageReaction';
@@ -53,6 +58,7 @@ import { BushTextChannel } from '../discord.js/BushTextChannel';
import { BushThreadChannel } from '../discord.js/BushThreadChannel';
import { BushThreadMember } from '../discord.js/BushThreadMember';
import { BushUser } from '../discord.js/BushUser';
+import { BushUserManager } from '../discord.js/BushUserManager';
import { BushVoiceChannel } from '../discord.js/BushVoiceChannel';
import { BushVoiceState } from '../discord.js/BushVoiceState';
import { BushClientUtil } from './BushClientUtil';
@@ -75,6 +81,8 @@ export type BushEmojiResolvable = Snowflake | BushGuildEmoji | BushReactionEmoji
export type BushEmojiIdentifierResolvable = string | BushEmojiResolvable;
export type BushThreadChannelResolvable = BushThreadChannel | Snowflake;
export type BushApplicationCommandResolvable = BushApplicationCommand | Snowflake;
+export type BushGuildTextChannelResolvable = BushTextChannel | BushNewsChannel | Snowflake;
+export type BushChannelResolvable = BushChannel | Snowflake;
export interface BushFetchedThreads {
threads: Collection<Snowflake, BushThreadChannel>;
hasMore?: boolean;
@@ -86,7 +94,9 @@ const rl = readline.createInterface({
terminal: false
});
-export class BushClient extends AkairoClient {
+type If<T extends boolean, A, B = null> = T extends true ? A : T extends false ? B : A | B;
+
+export class BushClient<Ready extends boolean = boolean> extends AkairoClient {
public static preStart(): void {
Structures.extend('GuildEmoji', () => BushGuildEmoji);
Structures.extend('DMChannel', () => BushDMChannel);
@@ -110,6 +120,12 @@ export class BushClient extends AkairoClient {
Structures.extend('SelectMenuInteraction', () => BushSelectMenuInteraction);
}
+ public declare channels: BushChannelManager;
+ public declare readonly emojis: BushBaseGuildEmojiManager;
+ public declare guilds: BushGuildManager;
+ public declare user: If<Ready, BushClientUser>;
+ public declare users: BushUserManager;
+
public config: Config;
public listenerHandler: BushListenerHandler;
public inhibitorHandler: BushInhibitorHandler;
@@ -289,17 +305,17 @@ export class BushClient extends AkairoClient {
}
/** Logs out, terminates the connection to Discord, and destroys the client. */
- public destroy(relogin = false): void | Promise<string> {
+ public override destroy(relogin = false): void | Promise<string> {
super.destroy();
if (relogin) {
return this.login(this.token);
}
}
- public isOwner(user: BushUserResolvable): boolean {
+ public override isOwner(user: BushUserResolvable): boolean {
return this.config.owners.includes(this.users.resolveId(user));
}
- public isSuperUser(user: BushUserResolvable): boolean {
+ public override isSuperUser(user: BushUserResolvable): boolean {
const userID = this.users.resolveId(user);
return !!BushCache?.global?.superUsers?.includes(userID) || this.config.owners.includes(userID);
}
diff --git a/src/lib/extensions/discord-akairo/BushClientUtil.ts b/src/lib/extensions/discord-akairo/BushClientUtil.ts
index aecc635..ac39611 100644
--- a/src/lib/extensions/discord-akairo/BushClientUtil.ts
+++ b/src/lib/extensions/discord-akairo/BushClientUtil.ts
@@ -521,7 +521,7 @@ export class BushClientUtil extends ClientUtil {
/** Gets the channel configs as a TextChannel */
public async getConfigChannel(channel: 'log' | 'error' | 'dm'): Promise<TextChannel> {
- return (await client.channels.fetch(client.config.channels[channel])) as TextChannel;
+ return (await client.channels.fetch(client.config.channels[channel])) as unknown as TextChannel;
}
/**
diff --git a/src/lib/extensions/discord-akairo/BushCommand.ts b/src/lib/extensions/discord-akairo/BushCommand.ts
index 6616d1d..6dd5449 100644
--- a/src/lib/extensions/discord-akairo/BushCommand.ts
+++ b/src/lib/extensions/discord-akairo/BushCommand.ts
@@ -182,8 +182,8 @@ export class BushCommand extends Command {
}
}
- public exec(message: BushMessage, args: any): any;
- public exec(message: BushMessage | BushSlashMessage, args: any): any {
+ public override exec(message: BushMessage, args: any): any;
+ public override exec(message: BushMessage | BushSlashMessage, args: any): any {
super.exec(message, args);
}
}
diff --git a/src/lib/extensions/discord-akairo/BushCommandHandler.ts b/src/lib/extensions/discord-akairo/BushCommandHandler.ts
index f16554c..7eca05b 100644
--- a/src/lib/extensions/discord-akairo/BushCommandHandler.ts
+++ b/src/lib/extensions/discord-akairo/BushCommandHandler.ts
@@ -35,7 +35,7 @@ export class BushCommandHandler extends CommandHandler {
super(client, options);
}
- public async runPostTypeInhibitors(message: BushMessage, command: BushCommand, slash = false): Promise<boolean> {
+ public override async runPostTypeInhibitors(message: BushMessage, command: BushCommand, slash = false): Promise<boolean> {
if (command.ownerOnly) {
const isOwner = client.isOwner(message.author);
if (!isOwner) {
diff --git a/src/lib/extensions/discord-akairo/BushInhibitor.ts b/src/lib/extensions/discord-akairo/BushInhibitor.ts
index f924458..8a199fc 100644
--- a/src/lib/extensions/discord-akairo/BushInhibitor.ts
+++ b/src/lib/extensions/discord-akairo/BushInhibitor.ts
@@ -8,8 +8,8 @@ import { BushSlashMessage } from './BushSlashMessage';
export class BushInhibitor extends Inhibitor {
public declare client: BushClient;
- public exec(message: BushMessage, command: BushCommand): any;
- public exec(message: BushMessage | BushSlashMessage, command: BushCommand): any {
+ public override exec(message: BushMessage, command: BushCommand): any;
+ public override exec(message: BushMessage | BushSlashMessage, command: BushCommand): any {
return super.exec(message, command);
}
}
diff --git a/src/lib/extensions/discord.js/BushBaseGuildEmojiManager.d.ts b/src/lib/extensions/discord.js/BushBaseGuildEmojiManager.d.ts
new file mode 100644
index 0000000..165ea6e
--- /dev/null
+++ b/src/lib/extensions/discord.js/BushBaseGuildEmojiManager.d.ts
@@ -0,0 +1,9 @@
+import { Snowflake } from 'discord-api-types';
+import { CachedManager } from 'discord.js';
+import { BushClient, BushEmojiIdentifierResolvable, BushEmojiResolvable } from '../discord-akairo/BushClient';
+import { BushGuildEmoji } from './BushGuildEmoji';
+
+export class BushBaseGuildEmojiManager extends CachedManager<Snowflake, BushGuildEmoji, BushEmojiResolvable> {
+ public constructor(client: BushClient, iterable?: Iterable<unknown>);
+ public resolveIdentifier(emoji: BushEmojiIdentifierResolvable): string | null;
+}
diff --git a/src/lib/extensions/discord.js/BushChannel.d.ts b/src/lib/extensions/discord.js/BushChannel.d.ts
new file mode 100644
index 0000000..482dd9b
--- /dev/null
+++ b/src/lib/extensions/discord.js/BushChannel.d.ts
@@ -0,0 +1,23 @@
+import { Snowflake } from 'discord-api-types';
+import { Channel, ChannelMention } from 'discord.js';
+import { ChannelTypes } from 'discord.js/typings/enums';
+import { BushClient } from '../discord-akairo/BushClient';
+import { BushDMChannel } from './BushDMChannel';
+import { BushNewsChannel } from './BushNewsChannel';
+import { BushTextChannel } from './BushTextChannel';
+import { BushThreadChannel } from './BushThreadChannel';
+
+export class BushChannel extends Channel {
+ public constructor(client: BushClient, data?: unknown, immediatePatch?: boolean);
+ public readonly createdAt: Date;
+ public readonly createdTimestamp: number;
+ public deleted: boolean;
+ public id: Snowflake;
+ public readonly partial: false;
+ public type: keyof typeof ChannelTypes;
+ public delete(): Promise<BushChannel>;
+ public fetch(force?: boolean): Promise<BushChannel>;
+ public isText(): this is BushTextChannel | BushDMChannel | BushNewsChannel | BushThreadChannel;
+ public isThread(): this is BushThreadChannel;
+ public toString(): ChannelMention;
+}
diff --git a/src/lib/extensions/discord.js/BushChannelManager.d.ts b/src/lib/extensions/discord.js/BushChannelManager.d.ts
new file mode 100644
index 0000000..1aa19c5
--- /dev/null
+++ b/src/lib/extensions/discord.js/BushChannelManager.d.ts
@@ -0,0 +1,9 @@
+import { Snowflake } from 'discord-api-types';
+import { CachedManager, Client, FetchChannelOptions } from 'discord.js';
+import { BushChannelResolvable } from '../discord-akairo/BushClient';
+import { BushChannel } from './BushChannel';
+
+export class BushChannelManager extends CachedManager<Snowflake, BushChannel, BushChannelResolvable> {
+ public constructor(client: Client, iterable: Iterable<unknown>);
+ public fetch(id: Snowflake, options?: FetchChannelOptions): Promise<BushChannel | null>;
+}
diff --git a/src/lib/extensions/discord.js/BushClientUser.d.ts b/src/lib/extensions/discord.js/BushClientUser.d.ts
new file mode 100644
index 0000000..119f8ce
--- /dev/null
+++ b/src/lib/extensions/discord.js/BushClientUser.d.ts
@@ -0,0 +1,23 @@
+import {
+ ActivityOptions,
+ Base64Resolvable,
+ BufferResolvable,
+ ClientUserEditData,
+ Presence,
+ PresenceData,
+ PresenceStatusData
+} from 'discord.js';
+import { BushUser } from './BushUser';
+
+export class BushClientUser extends BushUser {
+ public mfaEnabled: boolean;
+ public verified: boolean;
+ public edit(data: ClientUserEditData): Promise<this>;
+ public setActivity(options?: ActivityOptions): Presence;
+ public setActivity(name: string, options?: ActivityOptions): Presence;
+ public setAFK(afk: boolean, shardId?: number | number[]): Presence;
+ public setAvatar(avatar: BufferResolvable | Base64Resolvable): Promise<this>;
+ public setPresence(data: PresenceData): Presence;
+ public setStatus(status: PresenceStatusData, shardId?: number | number[]): Presence;
+ public setUsername(username: string): Promise<this>;
+}
diff --git a/src/lib/extensions/discord.js/BushGuild.ts b/src/lib/extensions/discord.js/BushGuild.ts
index dd41dad..acfe5da 100644
--- a/src/lib/extensions/discord.js/BushGuild.ts
+++ b/src/lib/extensions/discord.js/BushGuild.ts
@@ -1,8 +1,10 @@
-import { Guild, User } from 'discord.js';
-import { BushGuildMember, ModLogType } from '../..';
+import { Guild } from 'discord.js';
import { Guild as GuildDB, GuildModel } from '../../models/Guild';
+import { ModLogType } from '../../models/ModLog';
import { BushClient, BushUserResolvable } from '../discord-akairo/BushClient';
+import { BushGuildMember } from './BushGuildMember';
import { BushGuildMemberManager } from './BushGuildMemberManager';
+import { BushUser } from './BushUser';
export class BushGuild extends Guild {
public declare readonly client: BushClient;
@@ -27,7 +29,7 @@ export class BushGuild extends Guild {
}
public async unban(options: {
- user: BushUserResolvable | User;
+ user: BushUserResolvable | BushUser;
reason?: string;
moderator?: BushUserResolvable;
}): Promise<
diff --git a/src/lib/extensions/discord.js/BushGuildManager.d.ts b/src/lib/extensions/discord.js/BushGuildManager.d.ts
new file mode 100644
index 0000000..5bfe706
--- /dev/null
+++ b/src/lib/extensions/discord.js/BushGuildManager.d.ts
@@ -0,0 +1,20 @@
+import { Snowflake } from 'discord-api-types';
+import {
+ CachedManager,
+ Collection,
+ FetchGuildOptions,
+ FetchGuildsOptions,
+ Guild,
+ GuildCreateOptions,
+ OAuth2Guild
+} from 'discord.js';
+import { BushClient } from '../discord-akairo/BushClient';
+import { BushGuildResolvable } from './BushCommandInteraction';
+import { BushGuild } from './BushGuild';
+
+export class BushGuildManager extends CachedManager<Snowflake, BushGuild, BushGuildResolvable> {
+ public constructor(client: BushClient, iterable?: Iterable<unknown>);
+ public create(name: string, options?: GuildCreateOptions): Promise<Guild>;
+ public fetch(options: Snowflake | FetchGuildOptions): Promise<BushGuild>;
+ public fetch(options?: FetchGuildsOptions): Promise<Collection<Snowflake, OAuth2Guild>>;
+}
diff --git a/src/lib/extensions/discord.js/BushGuildMemberManager.d.ts b/src/lib/extensions/discord.js/BushGuildMemberManager.d.ts
index 96b99e5..7bdad83 100644
--- a/src/lib/extensions/discord.js/BushGuildMemberManager.d.ts
+++ b/src/lib/extensions/discord.js/BushGuildMemberManager.d.ts
@@ -1,5 +1,6 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import {
+ AddGuildMemberOptions,
BanOptions,
CachedManager,
Collection,
@@ -10,8 +11,7 @@ import {
GuildPruneMembersOptions,
GuildSearchMembersOptions,
Snowflake,
- User,
- UserResolvable
+ User
} from 'discord.js';
import { BushClient, BushGuildMemberResolvable, BushUserResolvable } from '../discord-akairo/BushClient';
import { BushGuild } from './BushGuild';
@@ -21,15 +21,20 @@ export class BushGuildMemberManager extends CachedManager<Snowflake, BushGuildMe
public constructor(guild: BushGuild, iterable?: Iterable<unknown>);
public declare readonly client: BushClient;
public guild: BushGuild;
+ public add(
+ user: BushUserResolvable,
+ options: AddGuildMemberOptions & { fetchWhenExisting: false }
+ ): Promise<GuildMember | null>;
+ public add(user: BushUserResolvable, options: AddGuildMemberOptions): Promise<GuildMember>;
public ban(user: BushUserResolvable, options?: BanOptions): Promise<GuildMember | User | Snowflake>;
public edit(user: BushUserResolvable, data: GuildMemberEditData, reason?: string): Promise<void>;
public fetch(
- options: UserResolvable | FetchMemberOptions | (FetchMembersOptions & { user: UserResolvable })
+ options: BushUserResolvable | FetchMemberOptions | (FetchMembersOptions & { user: BushUserResolvable })
): Promise<GuildMember>;
public fetch(options?: FetchMembersOptions): Promise<Collection<Snowflake, GuildMember>>;
- public kick(user: UserResolvable, reason?: string): Promise<BushGuildMember | User | Snowflake>;
+ public kick(user: BushUserResolvable, reason?: string): Promise<BushGuildMember | User | Snowflake>;
public prune(options: GuildPruneMembersOptions & { dry?: false; count: false }): Promise<null>;
public prune(options?: GuildPruneMembersOptions): Promise<number>;
public search(options: GuildSearchMembersOptions): Promise<Collection<Snowflake, GuildMember>>;
- public unban(user: UserResolvable, reason?: string): Promise<User>;
+ public unban(user: BushUserResolvable, reason?: string): Promise<User>;
}
diff --git a/src/lib/extensions/discord.js/BushMessage.ts b/src/lib/extensions/discord.js/BushMessage.ts
index 7971a6d..5638801 100644
--- a/src/lib/extensions/discord.js/BushMessage.ts
+++ b/src/lib/extensions/discord.js/BushMessage.ts
@@ -26,7 +26,7 @@ export class BushMessage extends Message {
super(client, data, channel);
// this.util = new BushCommandUtil(client.commandHandler, this);
}
- public fetch(force?: boolean): Promise<BushMessage> {
+ public override fetch(force?: boolean): Promise<BushMessage> {
return super.fetch(force) as Promise<BushMessage>;
}
}
diff --git a/src/lib/extensions/discord.js/BushUserManager.d.ts b/src/lib/extensions/discord.js/BushUserManager.d.ts
new file mode 100644
index 0000000..176b449
--- /dev/null
+++ b/src/lib/extensions/discord.js/BushUserManager.d.ts
@@ -0,0 +1,9 @@
+import { Snowflake } from 'discord-api-types';
+import { BaseFetchOptions, CachedManager } from 'discord.js';
+import { BushClient, BushUserResolvable } from '../discord-akairo/BushClient';
+import { BushUser } from './BushUser';
+
+export class BushUserManager extends CachedManager<Snowflake, BushUser, BushUserResolvable> {
+ public constructor(client: BushClient, iterable?: Iterable<unknown>);
+ public fetch(id: Snowflake, options?: BaseFetchOptions): Promise<BushUser>;
+}
diff --git a/src/lib/models/ActivePunishment.ts b/src/lib/models/ActivePunishment.ts
index 9fcafbe..c204c9a 100644
--- a/src/lib/models/ActivePunishment.ts
+++ b/src/lib/models/ActivePunishment.ts
@@ -36,31 +36,58 @@ export class ActivePunishment
/**
* The ID of this punishment (no real use just for a primary key)
*/
- id: string;
+ public get id(): string {
+ return null;
+ }
+ public set id(value: string) {}
+
/**
* The type of punishment.
*/
- type: ActivePunishmentType;
+ public get type(): ActivePunishmentType {
+ return null;
+ }
+ public set type(value: ActivePunishmentType) {}
+
/**
* The user who is punished.
*/
- user: Snowflake;
+ public get user(): Snowflake {
+ return null;
+ }
+ public set user(value: Snowflake) {}
+
/**
* The guild they are punished in.
*/
- guild: Snowflake;
+ public get guild(): Snowflake {
+ return null;
+ }
+ public set guild(value: Snowflake) {}
+
/**
* Additional info about the punishment if applicable. The channel id for channel blocks and role for punishment roles.
*/
- extraInfo: Snowflake;
+ public get extraInfo(): Snowflake {
+ return null;
+ }
+ public set extraInfo(value: Snowflake) {}
+
/**
* The date when this punishment expires (optional).
*/
- expires: Date | null;
+ public get expires(): Date | null {
+ return null;
+ }
+ public set expires(value: Date | null) {}
+
/**
* The reference to the modlog entry.
*/
- modlog: string;
+ public get modlog(): string {
+ return null;
+ }
+ public set modlog(value: string) {}
static initModel(sequelize: Sequelize): void {
ActivePunishment.init(
diff --git a/src/lib/models/BaseModel.ts b/src/lib/models/BaseModel.ts
index fdbd706..340e0aa 100644
--- a/src/lib/models/BaseModel.ts
+++ b/src/lib/models/BaseModel.ts
@@ -1,6 +1,17 @@
import { Model } from 'sequelize';
export abstract class BaseModel<A, B> extends Model<A, B> {
- public readonly createdAt: Date;
- public readonly updatedAt: Date;
+ /**
+ * The date when the row was created.
+ */
+ public get createdAt(): Date {
+ return null;
+ }
+
+ /**
+ * The date when the row was last updated.
+ */
+ public get updatedAt(): Date {
+ return null;
+ }
}
diff --git a/src/lib/models/Global.ts b/src/lib/models/Global.ts
index e37ef2b..80f11ca 100644
--- a/src/lib/models/Global.ts
+++ b/src/lib/models/Global.ts
@@ -24,27 +24,51 @@ export class Global extends BaseModel<GlobalModel, GlobalModelCreationAttributes
/**
* The bot's environment.
*/
- environment: 'production' | 'development' | 'beta';
+ public get environment(): 'production' | 'development' | 'beta' {
+ return null;
+ }
+ public set environment(value: 'production' | 'development' | 'beta') {}
+
/**
* Trusted users.
*/
- superUsers: Snowflake[];
+ public get superUsers(): Snowflake[] {
+ return null;
+ }
+ public set superUsers(value: Snowflake[]) {}
+
/**
* Globally disabled commands.
*/
- disabledCommands: string[];
+ public get disabledCommands(): string[] {
+ return null;
+ }
+ public set disabledCommands(value: string[]) {}
+
/**
* Globally blacklisted users.
*/
- blacklistedUsers: Snowflake[];
+ public get blacklistedUsers(): Snowflake[] {
+ return null;
+ }
+ public set blacklistedUsers(value: Snowflake[]) {}
+
/**
* Guilds blacklisted from using the bot.
*/
- blacklistedGuilds: Snowflake[];
+ public get blacklistedGuilds(): Snowflake[] {
+ return null;
+ }
+ public set blacklistedGuilds(value: Snowflake[]) {}
+
/**
* Channels where the bot is prevented from running.
*/
- blacklistedChannels: Snowflake[];
+ public get blacklistedChannels(): Snowflake[] {
+ return null;
+ }
+ public set blacklistedChannels(value: Snowflake[]) {}
+
static initModel(sequelize: Sequelize): void {
Global.init(
{
diff --git a/src/lib/models/Guild.ts b/src/lib/models/Guild.ts
index 7a0384c..aac4267 100644
--- a/src/lib/models/Guild.ts
+++ b/src/lib/models/Guild.ts
@@ -32,17 +32,93 @@ export interface GuildModelCreationAttributes {
}
export class Guild extends BaseModel<GuildModel, GuildModelCreationAttributes> implements GuildModel {
- id!: Snowflake;
- prefix!: string;
- autoPublishChannels: Snowflake[];
- blacklistedChannels: Snowflake[];
- blacklistedUsers: Snowflake[];
- welcomeChannel: Snowflake;
- muteRole: Snowflake;
- punishmentEnding: string;
- disabledCommands: string[];
- lockdownChannels: Snowflake[];
- autoModPhases: string[];
+ /**
+ * The ID of the guild
+ */
+ public get id(): Snowflake {
+ return null;
+ }
+ public set id(value: Snowflake) {}
+
+ /**
+ * The bot's prefix for the guild
+ */
+ public get prefix(): string {
+ return null;
+ }
+ public set prefix(value: string) {}
+
+ /**
+ * Channels that will have their messages automatically published
+ */
+ public get autoPublishChannels(): Snowflake[] {
+ return null;
+ }
+ public set autoPublishChannels(value: Snowflake[]) {}
+
+ /**
+ * Channels where the bot won't respond in.
+ */
+ public get blacklistedChannels(): Snowflake[] {
+ return null;
+ }
+ public set blacklistedChannels(value: Snowflake[]) {}
+
+ /**
+ * Users that the bot ignores in this guild
+ */
+ public get blacklistedUsers(): Snowflake[] {
+ return null;
+ }
+ public set blacklistedUsers(value: Snowflake[]) {}
+
+ /**
+ * The channels where the welcome messages are sent
+ */
+ public get welcomeChannel(): Snowflake {
+ return null;
+ }
+ public set welcomeChannel(value: Snowflake) {}
+
+ /**
+ * The role given out when muting someone
+ */
+ public get muteRole(): Snowflake {
+ return null;
+ }
+ public set muteRole(value: Snowflake) {}
+
+ /**
+ * The message that gets sent after someone gets a punishment dm
+ */
+ public get punishmentEnding(): string {
+ return null;
+ }
+ public set punishmentEnding(value: string) {}
+
+ /**
+ * Guild specific disabled commands
+ */
+ public get disabledCommands(): string[] {
+ return null;
+ }
+ public set disabledCommands(value: string[]) {}
+
+ /**
+ * Channels that should get locked down when the lockdown command gets used.
+ */
+ public get lockdownChannels(): Snowflake[] {
+ return null;
+ }
+ public set lockdownChannels(value: Snowflake[]) {}
+
+ /**
+ * Custom automod phases
+ */
+ public get autoModPhases(): string[] {
+ return null;
+ }
+ public set autoModPhases(value: string[]) {}
static initModel(sequelize: Sequelize, client: BushClient): void {
Guild.init(
diff --git a/src/lib/models/Level.ts b/src/lib/models/Level.ts
index 755b1c6..d8b98bf 100644
--- a/src/lib/models/Level.ts
+++ b/src/lib/models/Level.ts
@@ -18,16 +18,28 @@ export class Level extends BaseModel<LevelModel, LevelModelCreationAttributes> {
/**
* The user's id.
*/
- public user: Snowflake;
+ public get user(): Snowflake {
+ return null;
+ }
+ public set user(value: Snowflake) {}
+
/**
* The guild where the user is gaining xp.
*/
- public guild: Snowflake;
+ public get guild(): Snowflake {
+ return null;
+ }
+ public set guild(value: Snowflake) {}
+
/**
* The user's xp.
*/
- public xp: number;
- get level(): number {
+ public get xp(): number {
+ return null;
+ }
+ public set xp(value: number) {}
+
+ public get level(): number {
return Level.convertXpToLevel(this.xp);
}
diff --git a/src/lib/models/ModLog.ts b/src/lib/models/ModLog.ts
index 3375751..6933432 100644
--- a/src/lib/models/ModLog.ts
+++ b/src/lib/models/ModLog.ts
@@ -44,31 +44,58 @@ export class ModLog extends BaseModel<ModLogModel, ModLogModelCreationAttributes
/**
* The primary key of the modlog entry.
*/
- id: string;
+ public get id(): string {
+ return null;
+ }
+ public set id(value: string) {}
+
/**
* The type of punishment.
*/
- type: ModLogType;
+ public get type(): ModLogType {
+ return null;
+ }
+ public set type(value: ModLogType) {}
+
/**
* The user being punished.
*/
- user: Snowflake;
+ public get user(): Snowflake {
+ return null;
+ }
+ public set user(value: Snowflake) {}
+
/**
* The user carrying out the punishment.
*/
- moderator: Snowflake;
+ public get moderator(): Snowflake {
+ return null;
+ }
+ public set moderator(value: Snowflake) {}
+
/**
* The reason the user is getting punished
*/
- reason: string | null;
+ public get reason(): string | null {
+ return null;
+ }
+ public set reason(value: string | null) {}
+
/**
* The amount of time the user is getting punished for.
*/
- duration: number | null;
+ public get duration(): number | null {
+ return null;
+ }
+ public set duration(value: number | null) {}
+
/**
* The guild the user is getting punished in.
*/
- guild: Snowflake;
+ public get guild(): Snowflake {
+ return null;
+ }
+ public set guild(value: Snowflake) {}
static initModel(sequelize: Sequelize): void {
ModLog.init(
diff --git a/src/lib/models/StickyRole.ts b/src/lib/models/StickyRole.ts
index a3928e7..c71ecb7 100644
--- a/src/lib/models/StickyRole.ts
+++ b/src/lib/models/StickyRole.ts
@@ -14,9 +14,31 @@ export interface StickyRoleModelCreationAttributes {
}
export class StickyRole extends BaseModel<StickyRoleModel, StickyRoleModelCreationAttributes> implements StickyRoleModel {
- user: Snowflake;
- guild: Snowflake;
- roles: Snowflake[];
+ /**
+ * The id of the user the roles belongs to
+ */
+
+ public get user(): Snowflake {
+ return null;
+ }
+ public set user(value: Snowflake) {}
+
+ /**
+ * The guild where this should happen
+ */
+ public get guild(): Snowflake {
+ return null;
+ }
+ public set guild(value: Snowflake) {}
+
+ /**
+ * The roles that the user should have returned
+ */
+ public get roles(): Snowflake[] {
+ return null;
+ }
+ public set roles(value: Snowflake[]) {}
+
static initModel(sequelize: Sequelize): void {
StickyRole.init(
{
diff --git a/src/listeners/client/interactionCreate.ts b/src/listeners/client/interactionCreate.ts
index b0d1786..17249a9 100644
--- a/src/listeners/client/interactionCreate.ts
+++ b/src/listeners/client/interactionCreate.ts
@@ -10,7 +10,7 @@ export default class InteractionCreateListener extends BushListener {
});
}
- async exec(...[interaction]: ClientEvents['interactionCreate']): Promise<unknown> {
+ public override async exec(...[interaction]: ClientEvents['interactionCreate']): Promise<unknown> {
if (!interaction) return;
if (interaction.isCommand()) {
void client.console.info(
diff --git a/src/listeners/client/ready.ts b/src/listeners/client/ready.ts
index 449ec42..39e583b 100644
--- a/src/listeners/client/ready.ts
+++ b/src/listeners/client/ready.ts
@@ -9,7 +9,7 @@ export default class ReadyListener extends BushListener {
});
}
- public async exec(): Promise<void> {
+ public override async exec(): Promise<void> {
const tag = `<<${client.user.tag}>>`,
guildCount = `<<${client.guilds.cache.size.toLocaleString()}>>`,
userCount = `<<${client.users.cache.size.toLocaleString()}>>`;
diff --git a/src/listeners/commands/commandBlocked.ts b/src/listeners/commands/commandBlocked.ts
index 095ce58..5d6bcfb 100644
--- a/src/listeners/commands/commandBlocked.ts
+++ b/src/listeners/commands/commandBlocked.ts
@@ -8,7 +8,7 @@ export default class CommandBlockedListener extends BushListener {
});
}
- public async exec(...[message, command, reason]: BushCommandHandlerEvents['commandBlocked']): Promise<unknown> {
+ public override async exec(...[message, command, reason]: BushCommandHandlerEvents['commandBlocked']): Promise<unknown> {
return await CommandBlockedListener.handleBlocked(message, command, reason);
}
diff --git a/src/listeners/commands/commandError.ts b/src/listeners/commands/commandError.ts
index 0525fe6..22ed0c6 100644
--- a/src/listeners/commands/commandError.ts
+++ b/src/listeners/commands/commandError.ts
@@ -9,7 +9,7 @@ export default class CommandErrorListener extends BushListener {
});
}
- public async exec(...[error, message, command]: BushCommandHandlerEvents['error']): Promise<unknown> {
+ public override async exec(...[error, message, command]: BushCommandHandlerEvents['error']): Promise<unknown> {
return await CommandErrorListener.handleError(error, message, command);
}
diff --git a/src/listeners/commands/commandMissingPermissions.ts b/src/listeners/commands/commandMissingPermissions.ts
index 70adcd1..fdca5d3 100644
--- a/src/listeners/commands/commandMissingPermissions.ts
+++ b/src/listeners/commands/commandMissingPermissions.ts
@@ -9,7 +9,9 @@ export default class CommandMissingPermissionsListener extends BushListener {
});
}
- public async exec(...[message, command, type, missing]: BushCommandHandlerEvents['missingPermissions']): Promise<unknown> {
+ public override async exec(
+ ...[message, command, type, missing]: BushCommandHandlerEvents['missingPermissions']
+ ): Promise<unknown> {
return await CommandMissingPermissionsListener.handleMissing(message, command, type, missing);
}
diff --git a/src/listeners/commands/commandStarted.ts b/src/listeners/commands/commandStarted.ts
index bccb500..8b9c7e1 100644
--- a/src/listeners/commands/commandStarted.ts
+++ b/src/listeners/commands/commandStarted.ts
@@ -8,7 +8,7 @@ export default class CommandStartedListener extends BushListener {
category: 'commands'
});
}
- exec(...[message, command]: BushCommandHandlerEvents['commandStarted']): void {
+ public override exec(...[message, command]: BushCommandHandlerEvents['commandStarted']): void {
void client.logger.info(
'Command',
`The <<${command.id}>> command was used by <<${message.author.tag}>> in ${
diff --git a/src/listeners/commands/slashBlocked.ts b/src/listeners/commands/slashBlocked.ts
index bdad2ea..851cb5e 100644
--- a/src/listeners/commands/slashBlocked.ts
+++ b/src/listeners/commands/slashBlocked.ts
@@ -10,7 +10,7 @@ export default class SlashBlockedListener extends BushListener {
});
}
- public async exec(...[message, command, reason]: BushCommandHandlerEvents['slashBlocked']): Promise<unknown> {
+ public override async exec(...[message, command, reason]: BushCommandHandlerEvents['slashBlocked']): Promise<unknown> {
return await CommandBlockedListener.handleBlocked(message, command, reason);
}
}
diff --git a/src/listeners/commands/slashCommandError.ts b/src/listeners/commands/slashCommandError.ts
index 67febfd..5ab195f 100644
--- a/src/listeners/commands/slashCommandError.ts
+++ b/src/listeners/commands/slashCommandError.ts
@@ -9,7 +9,7 @@ export default class SlashCommandErrorListener extends BushListener {
category: 'commands'
});
}
- async exec(...[error, message, command]: BushCommandHandlerEvents['slashError']): Promise<void> {
+ public override async exec(...[error, message, command]: BushCommandHandlerEvents['slashError']): Promise<void> {
return await CommandErrorListener.handleError(error, message, command);
}
}
diff --git a/src/listeners/commands/slashMissingPermissions.ts b/src/listeners/commands/slashMissingPermissions.ts
index 07c63e9..a01b1fa 100644
--- a/src/listeners/commands/slashMissingPermissions.ts
+++ b/src/listeners/commands/slashMissingPermissions.ts
@@ -10,7 +10,7 @@ export default class SlashMissingPermissionsListener extends BushListener {
});
}
- public async exec(
+ public override async exec(
...[message, command, type, missing]: BushCommandHandlerEvents['slashMissingPermissions']
): Promise<unknown> {
return await CommandMissingPermissionsListener.handleMissing(message, command, type, missing);
diff --git a/src/listeners/commands/slashStarted.ts b/src/listeners/commands/slashStarted.ts
index dbb0c0d..e64df54 100644
--- a/src/listeners/commands/slashStarted.ts
+++ b/src/listeners/commands/slashStarted.ts
@@ -8,7 +8,7 @@ export default class SlashStartedListener extends BushListener {
category: 'commands'
});
}
- async exec(...[message, command]: BushCommandHandlerEvents['slashStarted']): Promise<unknown> {
+ public override async exec(...[message, command]: BushCommandHandlerEvents['slashStarted']): Promise<unknown> {
return void client.logger.info(
'SlashCommand',
`The <<${command.id}>> command was used by <<${message.author.tag}>> in ${
diff --git a/src/listeners/guild/syncUnban.ts b/src/listeners/guild/syncUnban.ts
index 00f260c..b1e4fd9 100644
--- a/src/listeners/guild/syncUnban.ts
+++ b/src/listeners/guild/syncUnban.ts
@@ -9,7 +9,7 @@ export default class SyncUnbanListener extends BushListener {
});
}
- public async exec(...[ban]: ClientEvents['guildBanRemove']): Promise<void> {
+ public override async exec(...[ban]: ClientEvents['guildBanRemove']): Promise<void> {
const bans = await ActivePunishment.findAll({
where: {
user: ban.user.id,
diff --git a/src/listeners/message/autoPublisher.ts b/src/listeners/message/autoPublisher.ts
index 3941371..a1d61f7 100644
--- a/src/listeners/message/autoPublisher.ts
+++ b/src/listeners/message/autoPublisher.ts
@@ -10,7 +10,7 @@ export default class autoPublisherListener extends BushListener {
});
}
- public async exec(...[message]: BushClientEvents['messageCreate']): Promise<void> {
+ public override async exec(...[message]: BushClientEvents['messageCreate']): Promise<void> {
if (!message.guild) return;
const autoPublishChannels = await message.guild.getSetting('autoPublishChannels');
if (autoPublishChannels) {
diff --git a/src/listeners/message/automodCreate.ts b/src/listeners/message/automodCreate.ts
index c2db29a..af9bb10 100644
--- a/src/listeners/message/automodCreate.ts
+++ b/src/listeners/message/automodCreate.ts
@@ -13,7 +13,7 @@ export default class AutomodMessageCreateListener extends BushListener {
});
}
- async exec(...[message]: BushClientEvents['messageCreate']): Promise<unknown> {
+ public override async exec(...[message]: BushClientEvents['messageCreate']): Promise<unknown> {
return await AutomodMessageCreateListener.automod(message);
}
diff --git a/src/listeners/message/automodUpdate.ts b/src/listeners/message/automodUpdate.ts
index 7b9e01a..2dd86a2 100644
--- a/src/listeners/message/automodUpdate.ts
+++ b/src/listeners/message/automodUpdate.ts
@@ -12,7 +12,7 @@ export default class AutomodMessageUpdateListener extends BushListener {
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
- async exec(...[_, newMessage]: BushClientEvents['messageUpdate']): Promise<unknown> {
+ public override async exec(...[_, newMessage]: BushClientEvents['messageUpdate']): Promise<unknown> {
const fullMessage = newMessage.partial ? await newMessage.fetch() : (newMessage as BushMessage);
return await AutomodMessageCreateListener.automod(fullMessage);
}
diff --git a/src/listeners/message/blacklistedFile.ts b/src/listeners/message/blacklistedFile.ts
index 93ed7b7..741b508 100644
--- a/src/listeners/message/blacklistedFile.ts
+++ b/src/listeners/message/blacklistedFile.ts
@@ -65,7 +65,7 @@ export default class BlacklistedFileListener extends BushListener {
});
}
- public async exec(...[message]: BushClientEvents['messageCreate']): Promise<void> {
+ public override async exec(...[message]: BushClientEvents['messageCreate']): Promise<void> {
const guildWhitelist = [
client.consts.mappings.guilds.bush,
client.consts.mappings.guilds.tree,
diff --git a/src/listeners/message/booster.ts b/src/listeners/message/booster.ts
index a042ad1..e57b8ea 100644
--- a/src/listeners/message/booster.ts
+++ b/src/listeners/message/booster.ts
@@ -10,7 +10,7 @@ export default class BoosterMessageListener extends BushListener {
});
}
- public async exec(...[message]: BushClientEvents['messageCreate']): Promise<unknown> {
+ public override async exec(...[message]: BushClientEvents['messageCreate']): Promise<unknown> {
if (message.type === 'USER_PREMIUM_GUILD_SUBSCRIPTION' && message.guild.id === this.client.consts.mappings.guilds.bush) {
return await message.react('<:nitroboost:785160348885975062>').catch(() => {
void this.client.console.warn('BoosterMessage', `Failed to react to <<${message.id}>>.`);
diff --git a/src/listeners/message/directMessage.ts b/src/listeners/message/directMessage.ts
index 3dc84ab..55180b1 100644
--- a/src/listeners/message/directMessage.ts
+++ b/src/listeners/message/directMessage.ts
@@ -11,7 +11,7 @@ export default class DirectMessageListener extends BushListener {
});
}
- public async exec(...[message]: BushClientEvents['messageCreate']): Promise<void> {
+ public override async exec(...[message]: BushClientEvents['messageCreate']): Promise<void> {
if (message.channel.type === 'DM') {
if (!(message.author.id == this.client.user.id) && message.author.bot) return;
const dmLogEmbed = new MessageEmbed().setTimestamp().setFooter(`User ID • ${message.author.id}`);
diff --git a/src/listeners/message/level.ts b/src/listeners/message/level.ts
index e8edfcf..db4be4b 100644
--- a/src/listeners/message/level.ts
+++ b/src/listeners/message/level.ts
@@ -11,7 +11,7 @@ export default class LevelListener extends BushListener {
category: 'message'
});
}
- async exec(...[message]: BushCommandHandlerEvents['messageInvalid']): Promise<void> {
+ public override async exec(...[message]: BushCommandHandlerEvents['messageInvalid']): Promise<void> {
if (message.author.bot) return;
if (!message.author) return;
if (!message.guild) return;
diff --git a/src/listeners/message/verbose.ts b/src/listeners/message/verbose.ts
index 45bf1de..632a22f 100644
--- a/src/listeners/message/verbose.ts
+++ b/src/listeners/message/verbose.ts
@@ -10,7 +10,7 @@ export default class MessageVerboseListener extends BushListener {
});
}
- public exec(...[message]: BushClientEvents['messageCreate']): Promise<void> {
+ public override exec(...[message]: BushClientEvents['messageCreate']): Promise<void> {
if (message.channel?.type === 'DM') return;
void this.client.console.verbose(
'Message',
diff --git a/src/listeners/other/consoleListener.ts b/src/listeners/other/consoleListener.ts
index 6d548ba..4b3a6bd 100644
--- a/src/listeners/other/consoleListener.ts
+++ b/src/listeners/other/consoleListener.ts
@@ -12,7 +12,7 @@ export default class ConsoleListener extends BushListener {
});
}
- public async exec(line: string): Promise<void> {
+ public override async exec(line: string): Promise<void> {
if (line.startsWith('eval ') || line.startsWith('ev ')) {
const sh = promisify(exec),
bot = client,
diff --git a/src/listeners/other/promiseRejection.ts b/src/listeners/other/promiseRejection.ts
index e0a62c0..f2623c6 100644
--- a/src/listeners/other/promiseRejection.ts
+++ b/src/listeners/other/promiseRejection.ts
@@ -8,7 +8,7 @@ export default class PromiseRejectionListener extends BushListener {
});
}
- public async exec(error: Error): Promise<void> {
+ public override async exec(error: Error): Promise<void> {
void client.console.error('PromiseRejection', `An unhanded promise rejection occurred:\n${error?.stack || error}`, false);
void client.console.channelError({
embeds: [
diff --git a/src/listeners/other/uncaughtException.ts b/src/listeners/other/uncaughtException.ts
index f1714f7..76afab9 100644
--- a/src/listeners/other/uncaughtException.ts
+++ b/src/listeners/other/uncaughtException.ts
@@ -8,7 +8,7 @@ export default class UncaughtExceptionListener extends BushListener {
});
}
- public async exec(error: Error): Promise<void> {
+ public override async exec(error: Error): Promise<void> {
void client.console.error('uncaughtException', `An uncaught exception occurred:\n${error?.stack || error}`, false);
void client.console.channelError({
embeds: [
diff --git a/src/tasks/removeExpiredPunishements.ts b/src/tasks/removeExpiredPunishements.ts
index fc3708d..3d7528b 100644
--- a/src/tasks/removeExpiredPunishements.ts
+++ b/src/tasks/removeExpiredPunishements.ts
@@ -1,4 +1,4 @@
-import { BushGuild, BushGuildMember, BushTask } from '@lib';
+import { BushGuild, BushTask } from '@lib';
import { Op } from 'sequelize';
import { ActivePunishment, ActivePunishmentType } from '../lib/models/ActivePunishment';
@@ -9,7 +9,7 @@ export default class RemoveExpiredPunishmentsTask extends BushTask {
runOnStart: true
});
}
- async exec(): Promise<void> {
+ public override async exec(): Promise<void> {
const expiredEntries = await ActivePunishment.findAll({
where: {
[Op.and]: [
@@ -29,7 +29,7 @@ export default class RemoveExpiredPunishmentsTask extends BushTask {
for (const entry of expiredEntries) {
const guild = client.guilds.cache.get(entry.guild) as BushGuild;
- const member = guild.members.cache.get(entry.user) as BushGuildMember;
+ const member = guild.members.cache.get(entry.user);
if (!guild) {
await entry.destroy();
diff --git a/src/tasks/updateCache.ts b/src/tasks/updateCache.ts
index 9ca7926..95ceca1 100644
--- a/src/tasks/updateCache.ts
+++ b/src/tasks/updateCache.ts
@@ -11,7 +11,7 @@ export class UpdateCacheTask extends BushTask {
runOnStart: false // done in preinit task
});
}
- public async exec(): Promise<void> {
+ public override async exec(): Promise<void> {
await UpdateCacheTask.updateGlobalCache(client);
await UpdateCacheTask.updateGuildCache(client);
void client.logger.verbose(`UpdateCache`, `Updated cache.`);