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:
parent
293115af22
commit
06877e90cc
476 changed files with 2965 additions and 3251 deletions
|
@ -1,11 +1,13 @@
|
|||
import {
|
||||
APIEmbed,
|
||||
ChannelType,
|
||||
Client,
|
||||
Constants,
|
||||
DiscordAPIError,
|
||||
EmbedData,
|
||||
EmbedType,
|
||||
Emoji,
|
||||
escapeCodeBlock,
|
||||
Guild,
|
||||
GuildAuditLogs,
|
||||
GuildAuditLogsEntry,
|
||||
GuildBasedChannel,
|
||||
GuildChannel,
|
||||
GuildMember,
|
||||
|
@ -14,19 +16,14 @@ import {
|
|||
InviteGuild,
|
||||
LimitedCollection,
|
||||
Message,
|
||||
MessageAttachment,
|
||||
MessageEmbed,
|
||||
MessageEmbedOptions,
|
||||
MessageCreateOptions,
|
||||
MessageMentionOptions,
|
||||
MessageOptions,
|
||||
PartialChannelData,
|
||||
PartialMessage,
|
||||
Snowflake,
|
||||
Sticker,
|
||||
TextChannel,
|
||||
ThreadChannel,
|
||||
TextBasedChannel,
|
||||
User,
|
||||
Util,
|
||||
} from "discord.js";
|
||||
import emojiRegex from "emoji-regex";
|
||||
import { either } from "fp-ts/lib/Either";
|
||||
|
@ -37,18 +34,17 @@ import humanizeDuration from "humanize-duration";
|
|||
import * as t from "io-ts";
|
||||
import { isEqual } from "lodash";
|
||||
import moment from "moment-timezone";
|
||||
import { performance } from "perf_hooks";
|
||||
import tlds from "tlds";
|
||||
import tmp from "tmp";
|
||||
import { URL } from "url";
|
||||
import { z, ZodError } from "zod";
|
||||
import { ISavedMessageAttachmentData, SavedMessage } from "./data/entities/SavedMessage";
|
||||
import { getProfiler } from "./profiler";
|
||||
import { SimpleCache } from "./SimpleCache";
|
||||
import { ChannelTypeStrings } from "./types";
|
||||
import { sendDM } from "./utils/sendDM";
|
||||
import { waitForButtonConfirm } from "./utils/waitForInteraction";
|
||||
import { decodeAndValidateStrict, StrictValidationError } from "./validatorUtils";
|
||||
import { z, ZodError } from "zod";
|
||||
import { getProfiler } from "./profiler";
|
||||
import { performance } from "perf_hooks";
|
||||
|
||||
const fsp = fs.promises;
|
||||
|
||||
|
@ -179,7 +175,7 @@ function tDeepPartialProp(prop: any) {
|
|||
}
|
||||
}
|
||||
|
||||
export function getScalarDifference<T>(
|
||||
export function getScalarDifference<T extends object>(
|
||||
base: T,
|
||||
object: T,
|
||||
ignoreKeys: string[] = [],
|
||||
|
@ -258,7 +254,7 @@ export function nonNullish<V>(v: V): v is NonNullable<V> {
|
|||
export type GuildInvite = Invite & { guild: InviteGuild | Guild };
|
||||
export type GroupDMInvite = Invite & {
|
||||
channel: PartialChannelData;
|
||||
type: typeof Constants.ChannelTypes.GROUP_DM;
|
||||
type: typeof ChannelType.GroupDM;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -392,8 +388,7 @@ export const zEmbedInput = z.object({
|
|||
.nullable(),
|
||||
});
|
||||
|
||||
export type EmbedWith<T extends keyof MessageEmbedOptions> = MessageEmbedOptions &
|
||||
Pick<Required<MessageEmbedOptions>, T>;
|
||||
export type EmbedWith<T extends keyof APIEmbed> = APIEmbed & Pick<Required<APIEmbed>, T>;
|
||||
|
||||
export const zStrictMessageContent = z.object({
|
||||
content: z.string().optional(),
|
||||
|
@ -406,7 +401,7 @@ export type ZStrictMessageContent = z.infer<typeof zStrictMessageContent>;
|
|||
export type StrictMessageContent = {
|
||||
content?: string;
|
||||
tts?: boolean;
|
||||
embeds?: MessageEmbedOptions[];
|
||||
embeds?: APIEmbed[];
|
||||
};
|
||||
|
||||
export const tStrictMessageContent = t.type({
|
||||
|
@ -573,7 +568,7 @@ export function convertMSToDelayString(ms: number): string {
|
|||
return result;
|
||||
}
|
||||
|
||||
export function successMessage(str, emoji = "<:zep_check:650361014180904971>") {
|
||||
export function successMessage(str: string, emoji = "<:zep_check:650361014180904971>") {
|
||||
return emoji ? `${emoji} ${str}` : str;
|
||||
}
|
||||
|
||||
|
@ -648,7 +643,7 @@ interface MatchedURL extends URL {
|
|||
}
|
||||
|
||||
export function getUrlsInString(str: string, onlyUnique = false): MatchedURL[] {
|
||||
let matches = str.match(urlRegex) || [];
|
||||
let matches = [...(str.match(urlRegex) ?? [])];
|
||||
if (onlyUnique) {
|
||||
matches = unique(matches);
|
||||
}
|
||||
|
@ -953,7 +948,7 @@ export function chunkMessageLines(str: string, maxChunkLength = 1990): string[]
|
|||
}
|
||||
|
||||
export async function createChunkedMessage(
|
||||
channel: TextChannel | ThreadChannel | User,
|
||||
channel: TextBasedChannel | User,
|
||||
messageText: string,
|
||||
allowedMentions?: MessageMentionOptions,
|
||||
) {
|
||||
|
@ -1403,17 +1398,21 @@ export async function resolveStickerId(bot: Client, id: Snowflake): Promise<Stic
|
|||
return fetchedSticker;
|
||||
}
|
||||
|
||||
export async function confirm(channel: TextChannel, userId: string, content: MessageOptions): Promise<boolean> {
|
||||
export async function confirm(
|
||||
channel: GuildTextBasedChannel,
|
||||
userId: string,
|
||||
content: MessageCreateOptions,
|
||||
): Promise<boolean> {
|
||||
return waitForButtonConfirm(channel, content, { restrictToId: userId });
|
||||
}
|
||||
|
||||
export function messageSummary(msg: SavedMessage) {
|
||||
// Regular text content
|
||||
let result = "```\n" + (msg.data.content ? Util.escapeCodeBlock(msg.data.content) : "<no text content>") + "```";
|
||||
let result = "```\n" + (msg.data.content ? escapeCodeBlock(msg.data.content) : "<no text content>") + "```";
|
||||
|
||||
// Rich embed
|
||||
const richEmbed = (msg.data.embeds || []).find((e) => (e as MessageEmbed).type === "rich");
|
||||
if (richEmbed) result += "Embed:```" + Util.escapeCodeBlock(JSON.stringify(richEmbed)) + "```";
|
||||
const richEmbed = (msg.data.embeds || []).find((e) => (e as EmbedData).type === EmbedType.Rich);
|
||||
if (richEmbed) result += "Embed:```" + escapeCodeBlock(JSON.stringify(richEmbed)) + "```";
|
||||
|
||||
// Attachments
|
||||
if (msg.data.attachments && msg.data.attachments.length) {
|
||||
|
@ -1442,9 +1441,9 @@ export function verboseUserName(user: User | UnknownUser): string {
|
|||
return `**${user.tag}** (\`${user.id}\`)`;
|
||||
}
|
||||
|
||||
export function verboseChannelMention(channel: GuildChannel | ThreadChannel): string {
|
||||
export function verboseChannelMention(channel: GuildBasedChannel): string {
|
||||
const plainTextName =
|
||||
channel.type === ChannelTypeStrings.VOICE || channel.type === ChannelTypeStrings.STAGE
|
||||
channel.type === ChannelType.GuildVoice || channel.type === ChannelType.GuildStageVoice
|
||||
? channel.name
|
||||
: `#${channel.name}`;
|
||||
return `<#${channel.id}> (**${plainTextName}**, \`${channel.id}\`)`;
|
||||
|
@ -1578,7 +1577,7 @@ export function isGuildInvite(invite: Invite): invite is GuildInvite {
|
|||
}
|
||||
|
||||
export function isGroupDMInvite(invite: Invite): invite is GroupDMInvite {
|
||||
return invite.guild == null && invite.channel?.type === ChannelTypeStrings.GROUP;
|
||||
return invite.guild == null && invite.channel?.type === ChannelType.GroupDM;
|
||||
}
|
||||
|
||||
export function inviteHasCounts(invite: Invite): invite is Invite {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue