aboutsummaryrefslogtreecommitdiff
path: root/lib/utils
diff options
context:
space:
mode:
Diffstat (limited to 'lib/utils')
-rw-r--r--lib/utils/Arg.ts2
-rw-r--r--lib/utils/BotClientUtils.ts5
-rw-r--r--lib/utils/Constants.ts3
-rw-r--r--lib/utils/ErrorHandler.ts2
-rw-r--r--lib/utils/Utils.ts16
5 files changed, 20 insertions, 8 deletions
diff --git a/lib/utils/Arg.ts b/lib/utils/Arg.ts
index 80ca878..803230b 100644
--- a/lib/utils/Arg.ts
+++ b/lib/utils/Arg.ts
@@ -1,5 +1,5 @@
import type { BaseBotArgumentType, BotArgumentType, BotArgumentTypeCaster, CommandMessage, SlashMessage } from '#lib';
-import { Argument, type Command, type Flag, type ParsedValuePredicate } from 'discord-akairo';
+import { Argument, type Command, type Flag, type ParsedValuePredicate } from '@notenoughupdates/discord-akairo';
import { type Message } from 'discord.js';
/**
diff --git a/lib/utils/BotClientUtils.ts b/lib/utils/BotClientUtils.ts
index 4b2c99b..6837237 100644
--- a/lib/utils/BotClientUtils.ts
+++ b/lib/utils/BotClientUtils.ts
@@ -21,7 +21,7 @@ import {
type Snowflake,
type UserResolvable
} from 'discord.js';
-import _ from 'lodash';
+import { camelCase } from 'lodash-es';
import { emojis, Pronoun, PronounCode, pronounMapping, regex } from './Constants.js';
import { generateErrorEmbed } from './ErrorHandler.js';
import { addOrRemoveFromArray, formatError, inspect } from './Utils.js';
@@ -329,7 +329,7 @@ export class BotClientUtils {
* @param error
*/
public async handleError(context: string, error: Error) {
- await this.client.console.error(_.camelCase(context), `An error occurred:\n${formatError(error, false)}`, false);
+ await this.client.console.error(camelCase(context), `An error occurred:\n${formatError(error, false)}`, false);
await this.client.console.channelError({
embeds: await generateErrorEmbed(this.client, { type: 'unhandledRejection', error: error, context })
});
@@ -382,6 +382,7 @@ export class BotClientUtils {
public async uploadImageToImgur(image: string) {
const clientId = this.client.config.credentials.imgurClientId;
+ // @ts-expect-error: missing global types
const formData = new FormData();
formData.append('type', 'base64');
formData.append('image', image);
diff --git a/lib/utils/Constants.ts b/lib/utils/Constants.ts
index dd65e28..5ecbce2 100644
--- a/lib/utils/Constants.ts
+++ b/lib/utils/Constants.ts
@@ -1,4 +1,4 @@
-import { default as deepLock } from 'deep-lock';
+import deepLock from '@tanzanite/deep-lock';
import { Colors, GuildFeature, Snowflake } from 'discord.js';
const rawCapeUrl = 'https://raw.githubusercontent.com/NotEnoughUpdates/capes/master/';
@@ -294,6 +294,7 @@ export const mappings = deepLock({
AUTO_MODERATION: { name: 'Auto Moderation', important: false, emoji: '<:autoModeration:1010579417942200321>', weight: 33 },
MEMBER_PROFILES: { name: 'Member Profiles', important: false, emoji: '<:memberProfiles:1010580480409747547>', weight: 34 },
NEW_THREAD_PERMISSIONS: { name: 'New Thread Permissions', important: false, emoji: '<:newThreadPermissions:1010580968442171492>', weight: 35 },
+ [GuildFeature.InvitesDisabled]: { name: 'Invites Disabled', important: false, emoji: null, weight: 36 },
},
regions: {
diff --git a/lib/utils/ErrorHandler.ts b/lib/utils/ErrorHandler.ts
index 3f8be89..ea4a026 100644
--- a/lib/utils/ErrorHandler.ts
+++ b/lib/utils/ErrorHandler.ts
@@ -1,4 +1,4 @@
-import { AkairoMessage, Command } from 'discord-akairo';
+import { AkairoMessage, Command } from '@notenoughupdates/discord-akairo';
import { ChannelType, Client, EmbedBuilder, escapeInlineCode, GuildTextBasedChannel, Message } from 'discord.js';
import { BotCommandHandlerEvents } from '../extensions/discord-akairo/BotCommandHandler.js';
import { SlashMessage } from '../extensions/discord-akairo/SlashMessage.js';
diff --git a/lib/utils/Utils.ts b/lib/utils/Utils.ts
index 13806ec..ea70abf 100644
--- a/lib/utils/Utils.ts
+++ b/lib/utils/Utils.ts
@@ -1,9 +1,11 @@
+import { Util as AkairoUtil } from '@notenoughupdates/discord-akairo';
import { humanizeDuration as humanizeDurationMod } from '@notenoughupdates/humanize-duration';
+import deepLock from '@tanzanite/deep-lock';
import assert from 'assert/strict';
import cp from 'child_process';
-import deepLock from 'deep-lock';
-import { Util as AkairoUtil } from 'discord-akairo';
import {
+ ActionRowBuilder,
+ APITextInputComponent,
Constants as DiscordConstants,
EmbedBuilder,
Message,
@@ -11,6 +13,8 @@ import {
PermissionFlagsBits,
PermissionsBitField,
PermissionsString,
+ TextInputBuilder,
+ TextInputComponentData,
type APIEmbed,
type APIMessage,
type CommandInteraction,
@@ -159,7 +163,7 @@ export async function slashRespond(
delete (newResponseOptions as InteractionReplyOptions).ephemeral; // Cannot change a preexisting message to be ephemeral
return (await interaction.editReply(newResponseOptions)) as Message | APIMessage;
} else {
- await interaction.reply(newResponseOptions);
+ await interaction.reply(newResponseOptions as SlashSendMessageType);
return await interaction.fetchReply().catch(() => undefined);
}
}
@@ -547,3 +551,9 @@ export function deepWriteable<T>(obj: T): DeepWritable<T> {
export function formatPerms(permissions: PermissionsString[]) {
return permissions.map((p) => `\`${mappings.permissions[p]?.name ?? p}\``).join(', ');
}
+
+export function ModalInput(options: Partial<TextInputComponentData | APITextInputComponent>): ActionRowBuilder<TextInputBuilder> {
+ return new ActionRowBuilder<TextInputBuilder>({
+ components: [new TextInputBuilder(options)]
+ });
+}