mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-05-10 04:25:01 +00:00
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 a80af1e729
.
* 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,20 +1,72 @@
|
|||
import { Permissions, PermissionString } from "discord.js";
|
||||
import { PermissionsBitField, PermissionsString } from "discord.js";
|
||||
import * as t from "io-ts";
|
||||
import { automodAction } from "../helpers";
|
||||
import { tNullable, isValidSnowflake, tPartialDictionary } from "../../../utils";
|
||||
import { noop } from "knub/dist/utils";
|
||||
import { renderTemplate, TemplateSafeValueContainer } from "../../../templateFormatter";
|
||||
import { isValidSnowflake, noop, tNullable, tPartialDictionary } from "../../../utils";
|
||||
import {
|
||||
guildToTemplateSafeGuild,
|
||||
savedMessageToTemplateSafeSavedMessage,
|
||||
userToTemplateSafeUser,
|
||||
} from "../../../utils/templateSafeObjects";
|
||||
import { automodAction } from "../helpers";
|
||||
|
||||
type LegacyPermMap = Record<string, keyof (typeof PermissionsBitField)["Flags"]>;
|
||||
const legacyPermMap = {
|
||||
CREATE_INSTANT_INVITE: "CreateInstantInvite",
|
||||
KICK_MEMBERS: "KickMembers",
|
||||
BAN_MEMBERS: "BanMembers",
|
||||
ADMINISTRATOR: "Administrator",
|
||||
MANAGE_CHANNELS: "ManageChannels",
|
||||
MANAGE_GUILD: "ManageGuild",
|
||||
ADD_REACTIONS: "AddReactions",
|
||||
VIEW_AUDIT_LOG: "ViewAuditLog",
|
||||
PRIORITY_SPEAKER: "PrioritySpeaker",
|
||||
STREAM: "Stream",
|
||||
VIEW_CHANNEL: "ViewChannel",
|
||||
SEND_MESSAGES: "SendMessages",
|
||||
SEND_TTSMESSAGES: "SendTTSMessages",
|
||||
MANAGE_MESSAGES: "ManageMessages",
|
||||
EMBED_LINKS: "EmbedLinks",
|
||||
ATTACH_FILES: "AttachFiles",
|
||||
READ_MESSAGE_HISTORY: "ReadMessageHistory",
|
||||
MENTION_EVERYONE: "MentionEveryone",
|
||||
USE_EXTERNAL_EMOJIS: "UseExternalEmojis",
|
||||
VIEW_GUILD_INSIGHTS: "ViewGuildInsights",
|
||||
CONNECT: "Connect",
|
||||
SPEAK: "Speak",
|
||||
MUTE_MEMBERS: "MuteMembers",
|
||||
DEAFEN_MEMBERS: "DeafenMembers",
|
||||
MOVE_MEMBERS: "MoveMembers",
|
||||
USE_VAD: "UseVAD",
|
||||
CHANGE_NICKNAME: "ChangeNickname",
|
||||
MANAGE_NICKNAMES: "ManageNicknames",
|
||||
MANAGE_ROLES: "ManageRoles",
|
||||
MANAGE_WEBHOOKS: "ManageWebhooks",
|
||||
MANAGE_EMOJIS_AND_STICKERS: "ManageEmojisAndStickers",
|
||||
USE_APPLICATION_COMMANDS: "UseApplicationCommands",
|
||||
REQUEST_TO_SPEAK: "RequestToSpeak",
|
||||
MANAGE_EVENTS: "ManageEvents",
|
||||
MANAGE_THREADS: "ManageThreads",
|
||||
CREATE_PUBLIC_THREADS: "CreatePublicThreads",
|
||||
CREATE_PRIVATE_THREADS: "CreatePrivateThreads",
|
||||
USE_EXTERNAL_STICKERS: "UseExternalStickers",
|
||||
SEND_MESSAGES_IN_THREADS: "SendMessagesInThreads",
|
||||
USE_EMBEDDED_ACTIVITIES: "UseEmbeddedActivities",
|
||||
MODERATE_MEMBERS: "ModerateMembers",
|
||||
} satisfies LegacyPermMap;
|
||||
|
||||
const realToLegacyMap = Object.entries(legacyPermMap).reduce((map, pair) => {
|
||||
map[pair[1]] = pair[0];
|
||||
return map;
|
||||
}, {}) as Record<keyof typeof PermissionsBitField.Flags, keyof typeof legacyPermMap>;
|
||||
|
||||
export const ChangePermsAction = automodAction({
|
||||
configType: t.type({
|
||||
target: t.string,
|
||||
channel: tNullable(t.string),
|
||||
perms: tPartialDictionary(t.keyof(Permissions.FLAGS), tNullable(t.boolean)),
|
||||
perms: tPartialDictionary(
|
||||
t.union([t.keyof(PermissionsBitField.Flags), t.keyof(legacyPermMap)]),
|
||||
tNullable(t.boolean),
|
||||
),
|
||||
}),
|
||||
defaultConfig: {},
|
||||
|
||||
|
@ -52,13 +104,15 @@ export const ChangePermsAction = automodAction({
|
|||
const channel = pluginData.guild.channels.resolve(channelId);
|
||||
if (!channel || channel.isThread()) return;
|
||||
const overwrite = channel.permissionOverwrites.cache.find((pw) => pw.id === target);
|
||||
const allow = new Permissions(overwrite?.allow ?? 0n).serialize();
|
||||
const deny = new Permissions(overwrite?.deny ?? 0n).serialize();
|
||||
const newPerms: Partial<Record<PermissionString, boolean | null>> = {};
|
||||
const allow = new PermissionsBitField(overwrite?.allow ?? 0n).serialize();
|
||||
const deny = new PermissionsBitField(overwrite?.deny ?? 0n).serialize();
|
||||
const newPerms: Partial<Record<PermissionsString, boolean | null>> = {};
|
||||
|
||||
for (const key in allow) {
|
||||
if (typeof actionConfig.perms[key] !== "undefined") {
|
||||
newPerms[key] = actionConfig.perms[key];
|
||||
const legacyKey = realToLegacyMap[key];
|
||||
const configEntry = actionConfig.perms[key] ?? actionConfig.perms[legacyKey];
|
||||
if (typeof configEntry !== "undefined") {
|
||||
newPerms[key] = configEntry;
|
||||
continue;
|
||||
}
|
||||
if (allow[key]) {
|
||||
|
@ -86,11 +140,12 @@ export const ChangePermsAction = automodAction({
|
|||
|
||||
if (!role) return;
|
||||
|
||||
const perms = new Permissions(role.permissions).serialize();
|
||||
const perms = new PermissionsBitField(role.permissions).serialize();
|
||||
for (const key in actionConfig.perms) {
|
||||
perms[key] = actionConfig.perms[key];
|
||||
const realKey = legacyPermMap[key] ?? key;
|
||||
perms[realKey] = actionConfig.perms[key];
|
||||
}
|
||||
const permsArray = <PermissionString[]>Object.keys(perms).filter((key) => perms[key]);
|
||||
await role.setPermissions(new Permissions(permsArray)).catch(noop);
|
||||
const permsArray = <PermissionsString[]>Object.keys(perms).filter((key) => perms[key]);
|
||||
await role.setPermissions(new PermissionsBitField(permsArray)).catch(noop);
|
||||
},
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue