aboutsummaryrefslogtreecommitdiff
path: root/lib/extensions/discord-akairo
diff options
context:
space:
mode:
authorIRONM00N <64110067+IRONM00N@users.noreply.github.com>2022-10-03 22:57:40 -0400
committerIRONM00N <64110067+IRONM00N@users.noreply.github.com>2022-10-03 22:57:40 -0400
commit612ed820a0600ec11ed642005377cd7f5a8a8b77 (patch)
tree6bca4e7268fd0063ff53cf64fa44df62a23dba50 /lib/extensions/discord-akairo
parented98ff7e2679f362f2657e77a6cf8dd3ce9b3d43 (diff)
downloadtanzanite-612ed820a0600ec11ed642005377cd7f5a8a8b77.tar.gz
tanzanite-612ed820a0600ec11ed642005377cd7f5a8a8b77.tar.bz2
tanzanite-612ed820a0600ec11ed642005377cd7f5a8a8b77.zip
wip
Diffstat (limited to 'lib/extensions/discord-akairo')
-rw-r--r--lib/extensions/discord-akairo/BotCommand.ts33
-rw-r--r--lib/extensions/discord-akairo/BotCommandHandler.ts11
-rw-r--r--lib/extensions/discord-akairo/BotInhibitor.ts6
-rw-r--r--lib/extensions/discord-akairo/BotInhibitorHandler.ts7
-rw-r--r--lib/extensions/discord-akairo/BotListener.ts5
-rw-r--r--lib/extensions/discord-akairo/BotListenerHandler.ts2
-rw-r--r--lib/extensions/discord-akairo/BotTask.ts2
-rw-r--r--lib/extensions/discord-akairo/BotTaskHandler.ts2
-rw-r--r--lib/extensions/discord-akairo/SlashMessage.ts2
-rw-r--r--lib/extensions/discord-akairo/TanzaniteClient.ts48
10 files changed, 60 insertions, 58 deletions
diff --git a/lib/extensions/discord-akairo/BotCommand.ts b/lib/extensions/discord-akairo/BotCommand.ts
index 11a8bad..a975667 100644
--- a/lib/extensions/discord-akairo/BotCommand.ts
+++ b/lib/extensions/discord-akairo/BotCommand.ts
@@ -11,14 +11,6 @@ import type {
import {
Command,
CommandArguments,
- type AkairoApplicationCommandAutocompleteOption,
- type AkairoApplicationCommandChannelOptionData,
- type AkairoApplicationCommandChoicesData,
- type AkairoApplicationCommandNonOptionsData,
- type AkairoApplicationCommandNumericOptionData,
- type AkairoApplicationCommandOptionData,
- type AkairoApplicationCommandSubCommandData,
- type AkairoApplicationCommandSubGroupData,
type ArgumentMatch,
type ArgumentOptions,
type ArgumentType,
@@ -29,8 +21,9 @@ import {
type ContextMenuCommand,
type SlashOption,
type SlashResolveType
-} from 'discord-akairo';
+} from '@notenoughupdates/discord-akairo';
import {
+ ApplicationCommandChannelOption,
PermissionsBitField,
type ApplicationCommandOptionChoiceData,
type ApplicationCommandOptionType,
@@ -39,7 +32,7 @@ import {
type Snowflake,
type User
} from 'discord.js';
-import _ from 'lodash';
+import { camelCase } from 'lodash-es';
import { SlashMessage } from './SlashMessage.js';
export interface OverriddenBaseArgumentType extends BaseArgumentType {
@@ -89,7 +82,7 @@ interface BaseBotArgumentOptions extends Omit<ArgumentOptions, 'type' | 'prompt'
/**
* The type used for slash commands. Set to false to disable this argument for slash commands.
*/
- slashType: AkairoApplicationCommandOptionData['type'] | false;
+ slashType: SlashOption['type'] | false;
/**
* Allows you to get a discord resolved object
@@ -111,7 +104,7 @@ interface BaseBotArgumentOptions extends Omit<ArgumentOptions, 'type' | 'prompt'
/**
* When the option type is channel, the allowed types of channels that can be selected
*/
- channelTypes?: AkairoApplicationCommandChannelOptionData['channelTypes'];
+ channelTypes?: ApplicationCommandChannelOption['channelTypes'];
/**
* The minimum value for an {@link ApplicationCommandOptionType.Integer Integer} or {@link ApplicationCommandOptionType.Number Number} option
@@ -508,8 +501,11 @@ export abstract class BotCommand extends Command {
(options_.slash || options_.slashOnly) &&
arg.slashType !== false
) {
+ // credit to https://dev.to/lucianbc/union-type-merging-in-typescript-9al
+ type AllKeys<T> = T extends any ? keyof T : never;
+
const newArg: {
- [key in SlashOptionKeys]?: any;
+ [key in AllKeys<SlashOption>]?: any;
} = {
name: arg.id,
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
@@ -560,7 +556,7 @@ export abstract class BotCommand extends Command {
});
for (const arg of combined) {
- const name = _.camelCase('id' in arg ? arg.id : arg.name),
+ const name = camelCase('id' in arg ? arg.id : arg.name),
description = arg.description || '*No description provided.*',
optional = arg.optional ?? false,
autocomplete = arg.autocomplete ?? false,
@@ -607,15 +603,6 @@ export abstract class BotCommand extends Command {
public abstract override exec(message: CommandMessage | SlashMessage, args: CommandArguments): any;
}
-type SlashOptionKeys =
- | keyof AkairoApplicationCommandSubGroupData
- | keyof AkairoApplicationCommandNonOptionsData
- | keyof AkairoApplicationCommandChannelOptionData
- | keyof AkairoApplicationCommandChoicesData
- | keyof AkairoApplicationCommandAutocompleteOption
- | keyof AkairoApplicationCommandNumericOptionData
- | keyof AkairoApplicationCommandSubCommandData;
-
interface PseudoArguments extends BaseBotArgumentType {
boolean: boolean;
flag: boolean;
diff --git a/lib/extensions/discord-akairo/BotCommandHandler.ts b/lib/extensions/discord-akairo/BotCommandHandler.ts
index e9b509f..c1415e3 100644
--- a/lib/extensions/discord-akairo/BotCommandHandler.ts
+++ b/lib/extensions/discord-akairo/BotCommandHandler.ts
@@ -1,5 +1,10 @@
-import type { BotCommand, CommandMessage, SlashMessage } from '#lib';
-import { CommandHandler, CommandHandlerEvents, type Category, type CommandHandlerOptions } from 'discord-akairo';
+import type { BotCommand, CommandMessage, SlashMessage, TanzaniteClient } from '#lib';
+import {
+ CommandHandler,
+ CommandHandlerEvents,
+ type Category,
+ type CommandHandlerOptions
+} from '@notenoughupdates/discord-akairo';
import { GuildMember, PermissionResolvable, type Collection, type Message, type PermissionsString } from 'discord.js';
import { CommandHandlerEvent } from '../../utils/Constants.js';
@@ -41,6 +46,8 @@ export interface BotCommandHandlerEvents extends CommandHandlerEvents {
}
export class BotCommandHandler extends CommandHandler {
+ public declare readonly client: TanzaniteClient;
+
public declare modules: Collection<string, BotCommand>;
public declare categories: Collection<string, Category<string, BotCommand>>;
diff --git a/lib/extensions/discord-akairo/BotInhibitor.ts b/lib/extensions/discord-akairo/BotInhibitor.ts
index 8892b8b..8a53e0d 100644
--- a/lib/extensions/discord-akairo/BotInhibitor.ts
+++ b/lib/extensions/discord-akairo/BotInhibitor.ts
@@ -1,8 +1,10 @@
-import type { BotCommand, CommandMessage, InhibitorReason, InhibitorType, SlashMessage } from '#lib';
-import { Inhibitor, InhibitorOptions } from 'discord-akairo';
+import type { BotCommand, CommandMessage, InhibitorReason, InhibitorType, SlashMessage, TanzaniteClient } from '#lib';
+import { Inhibitor, InhibitorOptions } from '@notenoughupdates/discord-akairo';
import { Message } from 'discord.js';
export abstract class BotInhibitor extends Inhibitor {
+ public declare readonly client: TanzaniteClient;
+
public constructor(id: InhibitorReason, options?: BotInhibitorOptions) {
super(id, options);
}
diff --git a/lib/extensions/discord-akairo/BotInhibitorHandler.ts b/lib/extensions/discord-akairo/BotInhibitorHandler.ts
index c6f318d..05caca6 100644
--- a/lib/extensions/discord-akairo/BotInhibitorHandler.ts
+++ b/lib/extensions/discord-akairo/BotInhibitorHandler.ts
@@ -1,3 +1,6 @@
-import { InhibitorHandler } from 'discord-akairo';
+import { InhibitorHandler } from '@notenoughupdates/discord-akairo';
+import { TanzaniteClient } from './TanzaniteClient.js';
-export class BotInhibitorHandler extends InhibitorHandler {}
+export class BotInhibitorHandler extends InhibitorHandler {
+ public declare readonly client: TanzaniteClient;
+}
diff --git a/lib/extensions/discord-akairo/BotListener.ts b/lib/extensions/discord-akairo/BotListener.ts
index 4f760e2..85acce3 100644
--- a/lib/extensions/discord-akairo/BotListener.ts
+++ b/lib/extensions/discord-akairo/BotListener.ts
@@ -1,6 +1,9 @@
-import { Listener, type ListenerOptions } from 'discord-akairo';
+import { Listener, type ListenerOptions } from '@notenoughupdates/discord-akairo';
+import { TanzaniteClient } from './TanzaniteClient.js';
export abstract class BotListener extends Listener {
+ public declare readonly client: TanzaniteClient<boolean>;
+
public constructor(id: string, options: BotListenerOptions) {
super(id, options);
}
diff --git a/lib/extensions/discord-akairo/BotListenerHandler.ts b/lib/extensions/discord-akairo/BotListenerHandler.ts
index bc14a53..6a1ad4c 100644
--- a/lib/extensions/discord-akairo/BotListenerHandler.ts
+++ b/lib/extensions/discord-akairo/BotListenerHandler.ts
@@ -1,4 +1,4 @@
-import { ListenerHandler } from 'discord-akairo';
+import { ListenerHandler } from '@notenoughupdates/discord-akairo';
import type readline from 'readline';
import { TanzaniteClient } from './TanzaniteClient.js';
diff --git a/lib/extensions/discord-akairo/BotTask.ts b/lib/extensions/discord-akairo/BotTask.ts
index 09b30ed..fd0dc2e 100644
--- a/lib/extensions/discord-akairo/BotTask.ts
+++ b/lib/extensions/discord-akairo/BotTask.ts
@@ -1,3 +1,3 @@
-import { Task } from 'discord-akairo';
+import { Task } from '@notenoughupdates/discord-akairo';
export abstract class BotTask extends Task {}
diff --git a/lib/extensions/discord-akairo/BotTaskHandler.ts b/lib/extensions/discord-akairo/BotTaskHandler.ts
index b522f2c..1b4b5bd 100644
--- a/lib/extensions/discord-akairo/BotTaskHandler.ts
+++ b/lib/extensions/discord-akairo/BotTaskHandler.ts
@@ -1,3 +1,3 @@
-import { TaskHandler } from 'discord-akairo';
+import { TaskHandler } from '@notenoughupdates/discord-akairo';
export class BotTaskHandler extends TaskHandler {}
diff --git a/lib/extensions/discord-akairo/SlashMessage.ts b/lib/extensions/discord-akairo/SlashMessage.ts
index 0a6669b..b93f25f 100644
--- a/lib/extensions/discord-akairo/SlashMessage.ts
+++ b/lib/extensions/discord-akairo/SlashMessage.ts
@@ -1,3 +1,3 @@
-import { AkairoMessage } from 'discord-akairo';
+import { AkairoMessage } from '@notenoughupdates/discord-akairo';
export class SlashMessage extends AkairoMessage {}
diff --git a/lib/extensions/discord-akairo/TanzaniteClient.ts b/lib/extensions/discord-akairo/TanzaniteClient.ts
index ac09aea..a8346ba 100644
--- a/lib/extensions/discord-akairo/TanzaniteClient.ts
+++ b/lib/extensions/discord-akairo/TanzaniteClient.ts
@@ -11,8 +11,20 @@ import {
snowflake
} from '#args';
import type { Config } from '#config';
-import { patch, type PatchedElements } from '@notenoughupdates/events-intercept';
-import * as Sentry from '@sentry/node';
+import {
+ ActivePunishment,
+ Global,
+ Guild as GuildModel,
+ GuildCount,
+ Highlight,
+ Level,
+ MemberCount,
+ ModLog,
+ Reminder,
+ Shared,
+ Stat,
+ StickyRole
+} from '#lib/models/index.js';
import {
AkairoClient,
ArgumentTypeCaster,
@@ -20,7 +32,9 @@ import {
version as akairoVersion,
type ArgumentPromptData,
type OtherwiseContentSupplier
-} from 'discord-akairo';
+} from '@notenoughupdates/discord-akairo';
+import * as Sentry from '@sentry/node';
+import { patch, type PatchedElements } from '@tanzanite/events-intercept';
import {
ActivityType,
GatewayIntentBits,
@@ -32,33 +46,19 @@ import {
type Awaitable,
type If,
type Message,
- type MessageOptions,
+ type MessageCreateOptions,
type Snowflake,
type UserResolvable
} from 'discord.js';
-import type EventEmitter from 'events';
import { google } from 'googleapis';
-import path from 'path';
-import readline from 'readline';
+import { type EventEmitter } from 'node:events';
+import path from 'node:path';
+import readline from 'node:readline';
+import { fileURLToPath } from 'node:url';
import { Options as SequelizeOptions, Sequelize, Sequelize as SequelizeType } from 'sequelize';
-import { fileURLToPath } from 'url';
import { tinyColor } from '../../arguments/tinyColor.js';
import { BotCache } from '../../common/BotCache.js';
import { HighlightManager } from '../../common/HighlightManager.js';
-import {
- ActivePunishment,
- Global,
- Guild as GuildModel,
- GuildCount,
- Highlight,
- Level,
- MemberCount,
- ModLog,
- Reminder,
- Shared,
- Stat,
- StickyRole
-} from '../../models/index.js';
import { AllowedMentions } from '../../utils/AllowedMentions.js';
import { BotClientUtils } from '../../utils/BotClientUtils.js';
import { emojis } from '../../utils/Constants.js';
@@ -279,7 +279,7 @@ export class TanzaniteClient<Ready extends boolean = boolean> extends AkairoClie
const modify = async (
message: Message,
- text: string | MessagePayload | MessageOptions | OtherwiseContentSupplier,
+ text: string | MessagePayload | MessageCreateOptions | OtherwiseContentSupplier,
data: ArgumentPromptData,
replaceError: boolean
) => {
@@ -387,7 +387,7 @@ export class TanzaniteClient<Ready extends boolean = boolean> extends AkairoClie
*/
public async init() {
if (parseInt(process.versions.node.split('.')[0]) < 18) {
- void (await this.console.error('version', `Please use node <<v18.x.x>>, not <<${process.version}>>.`, false));
+ void (await this.console.error('version', `Please use node <<v18.x.x>> or greater, not <<${process.version}>>.`, false));
process.exit(2);
}