mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-05-25 18:25:03 +00:00
fix: allow legacy keys in change_perms action
This commit is contained in:
parent
c36d47e0b8
commit
71554b5572
1 changed files with 60 additions and 4 deletions
|
@ -9,11 +9,64 @@ import {
|
||||||
} from "../../../utils/templateSafeObjects";
|
} from "../../../utils/templateSafeObjects";
|
||||||
import { automodAction } from "../helpers";
|
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({
|
export const ChangePermsAction = automodAction({
|
||||||
configType: t.type({
|
configType: t.type({
|
||||||
target: t.string,
|
target: t.string,
|
||||||
channel: tNullable(t.string),
|
channel: tNullable(t.string),
|
||||||
perms: tPartialDictionary(t.keyof(PermissionsBitField.Flags), tNullable(t.boolean)),
|
perms: tPartialDictionary(
|
||||||
|
t.union([t.keyof(PermissionsBitField.Flags), t.keyof(legacyPermMap)]),
|
||||||
|
tNullable(t.boolean),
|
||||||
|
),
|
||||||
}),
|
}),
|
||||||
defaultConfig: {},
|
defaultConfig: {},
|
||||||
|
|
||||||
|
@ -56,8 +109,10 @@ export const ChangePermsAction = automodAction({
|
||||||
const newPerms: Partial<Record<PermissionsString, boolean | null>> = {};
|
const newPerms: Partial<Record<PermissionsString, boolean | null>> = {};
|
||||||
|
|
||||||
for (const key in allow) {
|
for (const key in allow) {
|
||||||
if (typeof actionConfig.perms[key] !== "undefined") {
|
const legacyKey = realToLegacyMap[key];
|
||||||
newPerms[key] = actionConfig.perms[key];
|
const configEntry = actionConfig.perms[key] ?? actionConfig.perms[legacyKey];
|
||||||
|
if (typeof configEntry !== "undefined") {
|
||||||
|
newPerms[key] = configEntry;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (allow[key]) {
|
if (allow[key]) {
|
||||||
|
@ -87,7 +142,8 @@ export const ChangePermsAction = automodAction({
|
||||||
|
|
||||||
const perms = new PermissionsBitField(role.permissions).serialize();
|
const perms = new PermissionsBitField(role.permissions).serialize();
|
||||||
for (const key in actionConfig.perms) {
|
for (const key in actionConfig.perms) {
|
||||||
perms[key] = actionConfig.perms[key];
|
const realKey = legacyPermMap[key] ?? key;
|
||||||
|
perms[realKey] = actionConfig.perms[key];
|
||||||
}
|
}
|
||||||
const permsArray = <PermissionsString[]>Object.keys(perms).filter((key) => perms[key]);
|
const permsArray = <PermissionsString[]>Object.keys(perms).filter((key) => perms[key]);
|
||||||
await role.setPermissions(new PermissionsBitField(permsArray)).catch(noop);
|
await role.setPermissions(new PermissionsBitField(permsArray)).catch(noop);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue