mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-05-10 12:25:02 +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,18 +1,20 @@
|
|||
import { parseSignature, typedGuildCommand } from "knub";
|
||||
import { GuildChannel, GuildMember, User } from "discord.js";
|
||||
import { guildPluginMessageCommand, parseSignature } from "knub";
|
||||
import { TSignature } from "knub-command-manager";
|
||||
import { commandTypes } from "../../commandTypes";
|
||||
import { stripObjectToScalars, UnknownUser } from "../../utils";
|
||||
import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
|
||||
import { runEvent } from "./functions/runEvent";
|
||||
import { ConfigSchema, CustomEventsPluginType } from "./types";
|
||||
import { makeIoTsConfigParser } from "../../pluginUtils";
|
||||
import { createTypedTemplateSafeValueContainer, TemplateSafeValueContainer } from "../../templateFormatter";
|
||||
import { Channel, GuildChannel, GuildMember, ThreadChannel, User } from "discord.js";
|
||||
import { UnknownUser } from "../../utils";
|
||||
import { isScalar } from "../../utils/isScalar";
|
||||
import {
|
||||
channelToTemplateSafeChannel,
|
||||
memberToTemplateSafeMember,
|
||||
messageToTemplateSafeMessage,
|
||||
userToTemplateSafeUser,
|
||||
} from "../../utils/templateSafeObjects";
|
||||
import { isScalar } from "../../utils/isScalar";
|
||||
import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
|
||||
import { runEvent } from "./functions/runEvent";
|
||||
import { ConfigSchema, CustomEventsPluginType } from "./types";
|
||||
|
||||
const defaultOptions = {
|
||||
config: {
|
||||
|
@ -24,15 +26,17 @@ export const CustomEventsPlugin = zeppelinGuildPlugin<CustomEventsPluginType>()(
|
|||
name: "custom_events",
|
||||
showInDocs: false,
|
||||
|
||||
configSchema: ConfigSchema,
|
||||
configParser: makeIoTsConfigParser(ConfigSchema),
|
||||
defaultOptions,
|
||||
|
||||
afterLoad(pluginData) {
|
||||
const config = pluginData.config.get();
|
||||
for (const [key, event] of Object.entries(config.events)) {
|
||||
if (event.trigger.type === "command") {
|
||||
const signature = event.trigger.params ? parseSignature(event.trigger.params, commandTypes) : {};
|
||||
const eventCommand = typedGuildCommand({
|
||||
const signature: TSignature<any> = event.trigger.params
|
||||
? parseSignature(event.trigger.params, commandTypes)
|
||||
: {};
|
||||
const eventCommand = guildPluginMessageCommand<CustomEventsPluginType>()({
|
||||
trigger: event.trigger.name,
|
||||
permission: `events.${key}.trigger.can_use`,
|
||||
signature,
|
||||
|
@ -43,7 +47,7 @@ export const CustomEventsPlugin = zeppelinGuildPlugin<CustomEventsPluginType>()(
|
|||
safeArgs[argKey] = userToTemplateSafeUser(argValue);
|
||||
} else if (argValue instanceof GuildMember) {
|
||||
safeArgs[argKey] = memberToTemplateSafeMember(argValue);
|
||||
} else if (argValue instanceof GuildChannel || argValue instanceof ThreadChannel) {
|
||||
} else if (argValue instanceof GuildChannel && argValue.isTextBased()) {
|
||||
safeArgs[argKey] = channelToTemplateSafeChannel(argValue);
|
||||
} else if (isScalar(argValue)) {
|
||||
safeArgs[argKey] = argValue;
|
||||
|
@ -58,7 +62,7 @@ export const CustomEventsPlugin = zeppelinGuildPlugin<CustomEventsPluginType>()(
|
|||
runEvent(pluginData, event, { msg: message, args }, values);
|
||||
},
|
||||
});
|
||||
pluginData.commands.add(eventCommand);
|
||||
pluginData.messageCommands.add(eventCommand);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import { Snowflake } from "discord.js";
|
||||
import * as t from "io-ts";
|
||||
import { GuildPluginData } from "knub";
|
||||
import { canActOn } from "../../../pluginUtils";
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import { Snowflake } from "discord.js";
|
||||
import * as t from "io-ts";
|
||||
import { GuildPluginData } from "knub";
|
||||
import { TemplateSafeValueContainer } from "../../../templateFormatter";
|
||||
import { convertDelayStringToMS, noop, tDelayString } from "../../../utils";
|
||||
import { ActionError } from "../ActionError";
|
||||
import { CustomEventsPluginType, TCustomEvent } from "../types";
|
||||
import { TemplateSafeValueContainer } from "../../../templateFormatter";
|
||||
|
||||
export const MakeRoleMentionableAction = t.type({
|
||||
type: t.literal("make_role_mentionable"),
|
||||
|
@ -25,22 +25,10 @@ export async function makeRoleMentionableAction(
|
|||
throw new ActionError(`Unknown role: ${role}`);
|
||||
}
|
||||
|
||||
await role.edit(
|
||||
{
|
||||
mentionable: true,
|
||||
},
|
||||
`Custom event: ${event.name}`,
|
||||
);
|
||||
await role.setMentionable(true, `Custom event: ${event.name}`);
|
||||
|
||||
const timeout = convertDelayStringToMS(action.timeout)!;
|
||||
setTimeout(() => {
|
||||
role
|
||||
.edit(
|
||||
{
|
||||
mentionable: false,
|
||||
},
|
||||
`Custom event: ${event.name}`,
|
||||
)
|
||||
.catch(noop);
|
||||
role.setMentionable(false, `Custom event: ${event.name}`).catch(noop);
|
||||
}, timeout);
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import { Snowflake } from "discord.js";
|
||||
import * as t from "io-ts";
|
||||
import { GuildPluginData } from "knub";
|
||||
import { TemplateSafeValueContainer } from "../../../templateFormatter";
|
||||
import { ActionError } from "../ActionError";
|
||||
import { CustomEventsPluginType, TCustomEvent } from "../types";
|
||||
import { TemplateSafeValueContainer } from "../../../templateFormatter";
|
||||
|
||||
export const MakeRoleUnmentionableAction = t.type({
|
||||
type: t.literal("make_role_unmentionable"),
|
||||
|
@ -23,10 +23,5 @@ export async function makeRoleUnmentionableAction(
|
|||
throw new ActionError(`Unknown role: ${role}`);
|
||||
}
|
||||
|
||||
await role.edit(
|
||||
{
|
||||
mentionable: false,
|
||||
},
|
||||
`Custom event: ${event.name}`,
|
||||
);
|
||||
await role.setMentionable(false, `Custom event: ${event.name}`);
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import { Permissions, Snowflake, TextChannel, PermissionString } from "discord.js";
|
||||
import { PermissionsBitField, PermissionsString, Snowflake } from "discord.js";
|
||||
import * as t from "io-ts";
|
||||
import { GuildPluginData } from "knub";
|
||||
import { TemplateSafeValueContainer } from "../../../templateFormatter";
|
||||
import { ActionError } from "../ActionError";
|
||||
import { CustomEventsPluginType, TCustomEvent } from "../types";
|
||||
import { TemplateSafeValueContainer } from "../../../templateFormatter";
|
||||
|
||||
export const SetChannelPermissionOverridesAction = t.type({
|
||||
type: t.literal("set_channel_permission_overrides"),
|
||||
|
@ -26,15 +26,15 @@ export async function setChannelPermissionOverridesAction(
|
|||
event: TCustomEvent,
|
||||
eventData: any,
|
||||
) {
|
||||
const channel = pluginData.guild.channels.cache.get(action.channel as Snowflake) as TextChannel;
|
||||
if (!channel) {
|
||||
const channel = pluginData.guild.channels.cache.get(action.channel as Snowflake);
|
||||
if (!channel || channel.isThread() || !("guild" in channel)) {
|
||||
throw new ActionError(`Unknown channel: ${action.channel}`);
|
||||
}
|
||||
|
||||
for (const override of action.overrides) {
|
||||
const allow = new Permissions(BigInt(override.allow)).serialize();
|
||||
const deny = new Permissions(BigInt(override.deny)).serialize();
|
||||
const perms: Partial<Record<PermissionString, boolean | null>> = {};
|
||||
const allow = new PermissionsBitField(BigInt(override.allow)).serialize();
|
||||
const deny = new PermissionsBitField(BigInt(override.deny)).serialize();
|
||||
const perms: Partial<Record<PermissionsString, boolean | null>> = {};
|
||||
for (const key in allow) {
|
||||
if (allow[key]) {
|
||||
perms[key] = true;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { Message, TextChannel } from "discord.js";
|
||||
import { Message } from "discord.js";
|
||||
import { GuildPluginData } from "knub";
|
||||
import { sendErrorMessage } from "../../../pluginUtils";
|
||||
import { TemplateSafeValueContainer } from "../../../templateFormatter";
|
||||
import { ActionError } from "../ActionError";
|
||||
import { addRoleAction } from "../actions/addRoleAction";
|
||||
import { createCaseAction } from "../actions/createCaseAction";
|
||||
|
@ -10,7 +11,6 @@ import { messageAction } from "../actions/messageAction";
|
|||
import { moveToVoiceChannelAction } from "../actions/moveToVoiceChannelAction";
|
||||
import { setChannelPermissionOverridesAction } from "../actions/setChannelPermissionOverrides";
|
||||
import { CustomEventsPluginType, TCustomEvent } from "../types";
|
||||
import { TemplateSafeValueContainer } from "../../../templateFormatter";
|
||||
|
||||
export async function runEvent(
|
||||
pluginData: GuildPluginData<CustomEventsPluginType>,
|
||||
|
@ -39,7 +39,7 @@ export async function runEvent(
|
|||
} catch (e) {
|
||||
if (e instanceof ActionError) {
|
||||
if (event.trigger.type === "command") {
|
||||
sendErrorMessage(pluginData, (eventData.msg as Message).channel as TextChannel, e.message);
|
||||
sendErrorMessage(pluginData, (eventData.msg as Message).channel, e.message);
|
||||
} else {
|
||||
// TODO: Where to log action errors from other kinds of triggers?
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue