Update djs & knub (#395)

* update pkgs

Signed-off-by: GitHub <noreply@github.com>

* new knub typings

Signed-off-by: GitHub <noreply@github.com>

* more pkg updates

Signed-off-by: GitHub <noreply@github.com>

* more fixes

Signed-off-by: GitHub <noreply@github.com>

* channel typings

Signed-off-by: GitHub <noreply@github.com>

* more message utils typings fixes

Signed-off-by: GitHub <noreply@github.com>

* migrate permissions

Signed-off-by: GitHub <noreply@github.com>

* fix: InternalPoster webhookables

Signed-off-by: GitHub <noreply@github.com>

* djs typings: Attachment & Util

Signed-off-by: GitHub <noreply@github.com>

* more typings

Signed-off-by: GitHub <noreply@github.com>

* fix: rename permissionNames

Signed-off-by: GitHub <noreply@github.com>

* more fixes

Signed-off-by: GitHub <noreply@github.com>

* half the number of errors

* knub commands => messageCommands

Signed-off-by: GitHub <noreply@github.com>

* configPreprocessor => configParser

Signed-off-by: GitHub <noreply@github.com>

* fix channel.messages

Signed-off-by: GitHub <noreply@github.com>

* revert automod any typing

Signed-off-by: GitHub <noreply@github.com>

* more configParser typings

Signed-off-by: GitHub <noreply@github.com>

* revert

Signed-off-by: GitHub <noreply@github.com>

* remove knub type params

Signed-off-by: GitHub <noreply@github.com>

* fix more MessageEmbed / MessageOptions

Signed-off-by: GitHub <noreply@github.com>

* dumb commit for @almeidx to see why this is stupid

Signed-off-by: GitHub <noreply@github.com>

* temp disable custom_events

Signed-off-by: GitHub <noreply@github.com>

* more minor typings fixes - 23 err left

Signed-off-by: GitHub <noreply@github.com>

* update djs dep

* +debug build method (revert this)

Signed-off-by: GitHub <noreply@github.com>

* Revert "+debug build method (revert this)"

This reverts commit a80af1e729b742d1aad1097df538d224fbd32ce7.

* Redo +debug build (Revert this)

Signed-off-by: GitHub <noreply@github.com>

* uniform before/after Load shorthands

Signed-off-by: GitHub <noreply@github.com>

* remove unused imports & add prettier plugin

Signed-off-by: GitHub <noreply@github.com>

* env fixes for web platform hosting

Signed-off-by: GitHub <noreply@github.com>

* feat: knub v32-next; related fixes

* fix: allow legacy keys in change_perms action

* fix: request Message Content intent

* fix: use Knub's config validation logic in API

* fix(dashboard): fix error when there are no message and/or slash commands in a plugin

* fix(automod): start_thread action thread options

* fix(CustomEvents): message command types

* chore: remove unneeded type annotation

* feat: add forum channel icon; use thread icon for news threads

* chore: make tslint happy

* chore: fix formatting

---------

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: almeidx <almeidx@pm.me>
Co-authored-by: Dragory <2606411+Dragory@users.noreply.github.com>
This commit is contained in:
Tiago R 2023-04-01 12:58:17 +01:00 committed by GitHub
parent 293115af22
commit 06877e90cc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
476 changed files with 2965 additions and 3251 deletions

View file

@ -1,17 +1,16 @@
import {
ActionRowBuilder,
ButtonBuilder,
ButtonStyle,
GuildMember,
Message,
MessageActionRow,
MessageButton,
MessageComponentInteraction,
Permissions,
PermissionsBitField,
Snowflake,
TextChannel,
User,
} from "discord.js";
import escapeStringRegexp from "escape-string-regexp";
import { GuildPluginData } from "knub";
import { ArgsFromSignatureOrArray } from "knub/dist/commands/commandUtils";
import { ArgsFromSignatureOrArray, GuildPluginData } from "knub";
import moment from "moment-timezone";
import { getBaseUrl, sendErrorMessage } from "../../pluginUtils";
import { allowTimeout, RegExpRunner } from "../../RegExpRunner";
@ -116,12 +115,12 @@ export async function displaySearch(
}
} catch (e) {
if (e instanceof SearchError) {
sendErrorMessage(pluginData, msg.channel as TextChannel, e.message);
sendErrorMessage(pluginData, msg.channel, e.message);
return;
}
if (e instanceof InvalidRegexError) {
sendErrorMessage(pluginData, msg.channel as TextChannel, e.message);
sendErrorMessage(pluginData, msg.channel, e.message);
return;
}
@ -129,7 +128,7 @@ export async function displaySearch(
}
if (searchResult.totalResults === 0) {
sendErrorMessage(pluginData, msg.channel as TextChannel, "No results found");
sendErrorMessage(pluginData, msg.channel, "No results found");
return;
}
@ -169,23 +168,21 @@ export async function displaySearch(
// Set up pagination reactions if needed. The reactions are cleared after a timeout.
if (searchResult.totalResults > perPage) {
const idMod = `${searchMsg.id}:${moment.utc().valueOf()}`;
const buttons: MessageButton[] = [];
buttons.push(
new MessageButton()
.setStyle("SECONDARY")
const buttons: ButtonBuilder[] = [
new ButtonBuilder()
.setStyle(ButtonStyle.Secondary)
.setEmoji("⬅")
.setCustomId(`previousButton:${idMod}`)
.setDisabled(currentPage === 1),
new MessageButton()
.setStyle("SECONDARY")
new ButtonBuilder()
.setStyle(ButtonStyle.Secondary)
.setEmoji("➡")
.setCustomId(`nextButton:${idMod}`)
.setDisabled(currentPage === searchResult.lastPage),
new MessageButton().setStyle("SECONDARY").setEmoji("🔄").setCustomId(`reloadButton:${idMod}`),
);
new ButtonBuilder().setStyle(ButtonStyle.Secondary).setEmoji("🔄").setCustomId(`reloadButton:${idMod}`),
];
const row = new MessageActionRow().addComponents(buttons);
const row = new ActionRowBuilder<ButtonBuilder>().addComponents(buttons);
await searchMsg.edit({ content: result, components: [row] });
const collector = searchMsg.createMessageComponentCollector({ time: 2 * MINUTES });
@ -194,6 +191,7 @@ export async function displaySearch(
if (msg.author.id !== interaction.user.id) {
interaction
.reply({ content: `You are not permitted to use these buttons.`, ephemeral: true })
// tslint:disable-next-line no-console
.catch((err) => console.trace(err.message));
} else {
if (interaction.customId === `previousButton:${idMod}` && currentPage > 1) {
@ -261,12 +259,12 @@ export async function archiveSearch(
}
} catch (e) {
if (e instanceof SearchError) {
sendErrorMessage(pluginData, msg.channel as TextChannel, e.message);
sendErrorMessage(pluginData, msg.channel, e.message);
return;
}
if (e instanceof InvalidRegexError) {
sendErrorMessage(pluginData, msg.channel as TextChannel, e.message);
sendErrorMessage(pluginData, msg.channel, e.message);
return;
}
@ -274,7 +272,7 @@ export async function archiveSearch(
}
if (results.totalResults === 0) {
sendErrorMessage(pluginData, msg.channel as TextChannel, "No results found");
sendErrorMessage(pluginData, msg.channel, "No results found");
return;
}
@ -430,7 +428,7 @@ async function performBanSearch(
perPage = SEARCH_RESULTS_PER_PAGE,
): Promise<{ results: User[]; totalResults: number; page: number; lastPage: number; from: number; to: number }> {
const member = pluginData.guild.members.cache.get(pluginData.client.user!.id);
if (member && !hasDiscordPermissions(member.permissions, Permissions.FLAGS.BAN_MEMBERS)) {
if (member && !hasDiscordPermissions(member.permissions, PermissionsBitField.Flags.BanMembers)) {
throw new SearchError(`Unable to search bans: missing "Ban Members" permission`);
}