3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-15 05:41:51 +00:00

feat: update knub; update public interfaces for new knub

This commit is contained in:
Dragory 2024-03-30 13:31:30 +00:00
parent c2ae6d53d8
commit c89c5ea430
No known key found for this signature in database
15 changed files with 193 additions and 241 deletions

View file

@ -45,7 +45,7 @@
"fp-ts": "^2.0.1", "fp-ts": "^2.0.1",
"humanize-duration": "^3.15.0", "humanize-duration": "^3.15.0",
"js-yaml": "^3.13.1", "js-yaml": "^3.13.1",
"knub": "^32.0.0-next.20", "knub": "^32.0.0-next.21",
"knub-command-manager": "^9.1.0", "knub-command-manager": "^9.1.0",
"last-commit-log": "^2.1.0", "last-commit-log": "^2.1.0",
"lodash.chunk": "^4.2.0", "lodash.chunk": "^4.2.0",

View file

@ -10,7 +10,7 @@ import {
PermissionsBitField, PermissionsBitField,
TextBasedChannel, TextBasedChannel,
} from "discord.js"; } from "discord.js";
import { AnyPluginData, CommandContext, ExtendedMatchParams, GuildPluginData, helpers } from "knub"; import { AnyPluginData, BasePluginData, CommandContext, ExtendedMatchParams, GuildPluginData, helpers } from "knub";
import { logger } from "./logger"; import { logger } from "./logger";
import { isStaff } from "./staff"; import { isStaff } from "./staff";
import { TZeppelinKnub } from "./types"; import { TZeppelinKnub } from "./types";
@ -124,3 +124,16 @@ export function mapToPublicFn<T extends AnyFn>(inputFn: T) {
}; };
}; };
} }
type FnWithPluginData<TPluginData> = (pluginData: TPluginData, ...args: any[]) => any;
export function makePublicFn<TPluginData extends BasePluginData<any>, T extends FnWithPluginData<TPluginData>>(
pluginData: TPluginData,
fn: T,
) {
return (...args: Tail<Parameters<T>>): ReturnType<T> => {
return fn(pluginData, ...args);
};
}
// ???

View file

@ -1,10 +1,8 @@
import { guildPlugin } from "knub"; import { guildPlugin } from "knub";
import { CaseTypes } from "../../data/CaseTypes";
import { GuildArchives } from "../../data/GuildArchives"; import { GuildArchives } from "../../data/GuildArchives";
import { GuildCases } from "../../data/GuildCases"; import { GuildCases } from "../../data/GuildCases";
import { GuildLogs } from "../../data/GuildLogs"; import { GuildLogs } from "../../data/GuildLogs";
import { Case } from "../../data/entities/Case"; import { makePublicFn } from "../../pluginUtils";
import { mapToPublicFn } from "../../pluginUtils";
import { InternalPosterPlugin } from "../InternalPoster/InternalPosterPlugin"; import { InternalPosterPlugin } from "../InternalPoster/InternalPosterPlugin";
import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin"; import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
import { createCase } from "./functions/createCase"; import { createCase } from "./functions/createCase";
@ -15,7 +13,7 @@ import { getCaseTypeAmountForUserId } from "./functions/getCaseTypeAmountForUser
import { getRecentCasesByMod } from "./functions/getRecentCasesByMod"; import { getRecentCasesByMod } from "./functions/getRecentCasesByMod";
import { getTotalCasesByMod } from "./functions/getTotalCasesByMod"; import { getTotalCasesByMod } from "./functions/getTotalCasesByMod";
import { postCaseToCaseLogChannel } from "./functions/postToCaseLogChannel"; import { postCaseToCaseLogChannel } from "./functions/postToCaseLogChannel";
import { CaseArgs, CaseNoteArgs, CasesPluginType, zCasesConfig } from "./types"; import { CasesPluginType, zCasesConfig } from "./types";
// The `any` cast here is to prevent TypeScript from locking up from the circular dependency // The `any` cast here is to prevent TypeScript from locking up from the circular dependency
function getLogsPlugin(): Promise<any> { function getLogsPlugin(): Promise<any> {
@ -40,36 +38,17 @@ export const CasesPlugin = guildPlugin<CasesPluginType>()({
configParser: (input) => zCasesConfig.parse(input), configParser: (input) => zCasesConfig.parse(input),
defaultOptions, defaultOptions,
public: { public(pluginData) {
createCase(pluginData) { return {
return (args: CaseArgs) => { createCase: makePublicFn(pluginData, createCase),
return createCase(pluginData, args); createCaseNote: makePublicFn(pluginData, createCaseNote),
}; postCaseToCaseLogChannel: makePublicFn(pluginData, postCaseToCaseLogChannel),
}, getCaseTypeAmountForUserId: makePublicFn(pluginData, getCaseTypeAmountForUserId),
getTotalCasesByMod: makePublicFn(pluginData, getTotalCasesByMod),
createCaseNote(pluginData) { getRecentCasesByMod: makePublicFn(pluginData, getRecentCasesByMod),
return (args: CaseNoteArgs) => { getCaseEmbed: makePublicFn(pluginData, getCaseEmbed),
return createCaseNote(pluginData, args); getCaseSummary: makePublicFn(pluginData, getCaseSummary),
}; };
},
postCaseToCaseLogChannel(pluginData) {
return (caseOrCaseId: Case | number) => {
return postCaseToCaseLogChannel(pluginData, caseOrCaseId);
};
},
getCaseTypeAmountForUserId(pluginData) {
return (userID: string, type: CaseTypes) => {
return getCaseTypeAmountForUserId(pluginData, userID, type);
};
},
getTotalCasesByMod: mapToPublicFn(getTotalCasesByMod),
getRecentCasesByMod: mapToPublicFn(getRecentCasesByMod),
getCaseEmbed: mapToPublicFn(getCaseEmbed),
getCaseSummary: mapToPublicFn(getCaseSummary),
}, },
afterLoad(pluginData) { afterLoad(pluginData) {

View file

@ -2,7 +2,7 @@ import { EventEmitter } from "events";
import { PluginOptions, guildPlugin } from "knub"; import { PluginOptions, guildPlugin } from "knub";
import { GuildCounters } from "../../data/GuildCounters"; import { GuildCounters } from "../../data/GuildCounters";
import { CounterTrigger, parseCounterConditionString } from "../../data/entities/CounterTrigger"; import { CounterTrigger, parseCounterConditionString } from "../../data/entities/CounterTrigger";
import { mapToPublicFn } from "../../pluginUtils"; import { makePublicFn } from "../../pluginUtils";
import { MINUTES, convertDelayStringToMS, values } from "../../utils"; import { MINUTES, convertDelayStringToMS, values } from "../../utils";
import { AddCounterCmd } from "./commands/AddCounterCmd"; import { AddCounterCmd } from "./commands/AddCounterCmd";
import { CountersListCmd } from "./commands/CountersListCmd"; import { CountersListCmd } from "./commands/CountersListCmd";
@ -62,20 +62,16 @@ export const CountersPlugin = guildPlugin<CountersPluginType>()({
// TODO: Separate input and output types // TODO: Separate input and output types
configParser: (input) => zCountersConfig.parse(input), configParser: (input) => zCountersConfig.parse(input),
public: { public(pluginData) {
counterExists: mapToPublicFn(counterExists), return {
counterExists: makePublicFn(pluginData, counterExists),
// Change a counter's value by a relative amount, e.g. +5 changeCounterValue: makePublicFn(pluginData, changeCounterValue),
changeCounterValue: mapToPublicFn(changeCounterValue), setCounterValue: makePublicFn(pluginData, setCounterValue),
getPrettyNameForCounter: makePublicFn(pluginData, getPrettyNameForCounter),
// Set a counter's value to an absolute value getPrettyNameForCounterTrigger: makePublicFn(pluginData, getPrettyNameForCounterTrigger),
setCounterValue: mapToPublicFn(setCounterValue), onCounterEvent: makePublicFn(pluginData, onCounterEvent),
offCounterEvent: makePublicFn(pluginData, offCounterEvent),
getPrettyNameForCounter: mapToPublicFn(getPrettyNameForCounter), };
getPrettyNameForCounterTrigger: mapToPublicFn(getPrettyNameForCounterTrigger),
onCounterEvent: mapToPublicFn(onCounterEvent),
offCounterEvent: mapToPublicFn(offCounterEvent),
}, },
// prettier-ignore // prettier-ignore

View file

@ -1,7 +1,7 @@
import { guildPlugin } from "knub"; import { guildPlugin } from "knub";
import z from "zod"; import z from "zod";
import { GuildMemberCache } from "../../data/GuildMemberCache"; import { GuildMemberCache } from "../../data/GuildMemberCache";
import { mapToPublicFn } from "../../pluginUtils"; import { makePublicFn } from "../../pluginUtils";
import { SECONDS } from "../../utils"; import { SECONDS } from "../../utils";
import { cancelDeletionOnMemberJoin } from "./events/cancelDeletionOnMemberJoin"; import { cancelDeletionOnMemberJoin } from "./events/cancelDeletionOnMemberJoin";
import { removeMemberCacheOnMemberLeave } from "./events/removeMemberCacheOnMemberLeave"; import { removeMemberCacheOnMemberLeave } from "./events/removeMemberCacheOnMemberLeave";
@ -28,8 +28,10 @@ export const GuildMemberCachePlugin = guildPlugin<GuildMemberCachePluginType>()(
cancelDeletionOnMemberJoin, cancelDeletionOnMemberJoin,
], ],
public: { public(pluginData) {
getCachedMemberData: mapToPublicFn(getCachedMemberData), return {
getCachedMemberData: makePublicFn(pluginData, getCachedMemberData),
};
}, },
beforeLoad(pluginData) { beforeLoad(pluginData) {

View file

@ -2,7 +2,7 @@ import { PluginOptions, guildPlugin } from "knub";
import z from "zod"; import z from "zod";
import { Queue } from "../../Queue"; import { Queue } from "../../Queue";
import { Webhooks } from "../../data/Webhooks"; import { Webhooks } from "../../data/Webhooks";
import { mapToPublicFn } from "../../pluginUtils"; import { makePublicFn } from "../../pluginUtils";
import { editMessage } from "./functions/editMessage"; import { editMessage } from "./functions/editMessage";
import { sendMessage } from "./functions/sendMessage"; import { sendMessage } from "./functions/sendMessage";
import { InternalPosterPluginType } from "./types"; import { InternalPosterPluginType } from "./types";
@ -18,10 +18,11 @@ export const InternalPosterPlugin = guildPlugin<InternalPosterPluginType>()({
configParser: (input) => z.strictObject({}).parse(input), configParser: (input) => z.strictObject({}).parse(input),
defaultOptions, defaultOptions,
// prettier-ignore public(pluginData) {
public: { return {
sendMessage: mapToPublicFn(sendMessage), sendMessage: makePublicFn(pluginData, sendMessage),
editMessage: mapToPublicFn(editMessage), editMessage: makePublicFn(pluginData, editMessage),
};
}, },
async beforeLoad(pluginData) { async beforeLoad(pluginData) {

View file

@ -6,9 +6,9 @@ import { GuildLogs } from "../../data/GuildLogs";
import { GuildSavedMessages } from "../../data/GuildSavedMessages"; import { GuildSavedMessages } from "../../data/GuildSavedMessages";
import { LogType } from "../../data/LogType"; import { LogType } from "../../data/LogType";
import { logger } from "../../logger"; import { logger } from "../../logger";
import { mapToPublicFn } from "../../pluginUtils"; import { makePublicFn } from "../../pluginUtils";
import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners"; import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners";
import { TypedTemplateSafeValueContainer, createTypedTemplateSafeValueContainer } from "../../templateFormatter"; import { createTypedTemplateSafeValueContainer } from "../../templateFormatter";
import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin"; import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
import { LogsChannelCreateEvt, LogsChannelDeleteEvt, LogsChannelUpdateEvt } from "./events/LogsChannelModifyEvts"; import { LogsChannelCreateEvt, LogsChannelDeleteEvt, LogsChannelUpdateEvt } from "./events/LogsChannelModifyEvts";
import { import {
@ -30,7 +30,7 @@ import {
import { LogsThreadCreateEvt, LogsThreadDeleteEvt, LogsThreadUpdateEvt } from "./events/LogsThreadModifyEvts"; import { LogsThreadCreateEvt, LogsThreadDeleteEvt, LogsThreadUpdateEvt } from "./events/LogsThreadModifyEvts";
import { LogsGuildMemberUpdateEvt } from "./events/LogsUserUpdateEvts"; import { LogsGuildMemberUpdateEvt } from "./events/LogsUserUpdateEvts";
import { LogsVoiceStateUpdateEvt } from "./events/LogsVoiceChannelEvts"; import { LogsVoiceStateUpdateEvt } from "./events/LogsVoiceChannelEvts";
import { FORMAT_NO_TIMESTAMP, ILogTypeData, LogsPluginType, TLogChannel, zLogsConfig } from "./types"; import { FORMAT_NO_TIMESTAMP, LogsPluginType, zLogsConfig } from "./types";
import { getLogMessage } from "./util/getLogMessage"; import { getLogMessage } from "./util/getLogMessage";
import { log } from "./util/log"; import { log } from "./util/log";
import { onMessageDelete } from "./util/onMessageDelete"; import { onMessageDelete } from "./util/onMessageDelete";
@ -172,86 +172,79 @@ export const LogsPlugin = guildPlugin<LogsPluginType>()({
LogsGuildMemberRoleChangeEvt, LogsGuildMemberRoleChangeEvt,
], ],
public: { public(pluginData) {
getLogMessage: (pluginData) => { return {
return <TLogType extends keyof ILogTypeData>( getLogMessage: makePublicFn(pluginData, getLogMessage),
type: TLogType, logAutomodAction: makePublicFn(pluginData, logAutomodAction),
data: TypedTemplateSafeValueContainer<ILogTypeData[TLogType]>, logBotAlert: makePublicFn(pluginData, logBotAlert),
opts?: Pick<TLogChannel, "format" | "timestamp_format" | "include_embed_timestamp">, logCaseCreate: makePublicFn(pluginData, logCaseCreate),
) => { logCaseDelete: makePublicFn(pluginData, logCaseDelete),
return getLogMessage(pluginData, type, data, opts); logCaseUpdate: makePublicFn(pluginData, logCaseUpdate),
}; logCensor: makePublicFn(pluginData, logCensor),
}, logChannelCreate: makePublicFn(pluginData, logChannelCreate),
logChannelDelete: makePublicFn(pluginData, logChannelDelete),
logAutomodAction: mapToPublicFn(logAutomodAction), logChannelUpdate: makePublicFn(pluginData, logChannelUpdate),
logBotAlert: mapToPublicFn(logBotAlert), logClean: makePublicFn(pluginData, logClean),
logCaseCreate: mapToPublicFn(logCaseCreate), logEmojiCreate: makePublicFn(pluginData, logEmojiCreate),
logCaseDelete: mapToPublicFn(logCaseDelete), logEmojiDelete: makePublicFn(pluginData, logEmojiDelete),
logCaseUpdate: mapToPublicFn(logCaseUpdate), logEmojiUpdate: makePublicFn(pluginData, logEmojiUpdate),
logCensor: mapToPublicFn(logCensor), logMassBan: makePublicFn(pluginData, logMassBan),
logChannelCreate: mapToPublicFn(logChannelCreate), logMassMute: makePublicFn(pluginData, logMassMute),
logChannelDelete: mapToPublicFn(logChannelDelete), logMassUnban: makePublicFn(pluginData, logMassUnban),
logChannelUpdate: mapToPublicFn(logChannelUpdate), logMemberBan: makePublicFn(pluginData, logMemberBan),
logClean: mapToPublicFn(logClean), logMemberForceban: makePublicFn(pluginData, logMemberForceban),
logEmojiCreate: mapToPublicFn(logEmojiCreate), logMemberJoin: makePublicFn(pluginData, logMemberJoin),
logEmojiDelete: mapToPublicFn(logEmojiDelete), logMemberJoinWithPriorRecords: makePublicFn(pluginData, logMemberJoinWithPriorRecords),
logEmojiUpdate: mapToPublicFn(logEmojiUpdate), logMemberKick: makePublicFn(pluginData, logMemberKick),
logMassBan: mapToPublicFn(logMassBan), logMemberLeave: makePublicFn(pluginData, logMemberLeave),
logMassMute: mapToPublicFn(logMassMute), logMemberMute: makePublicFn(pluginData, logMemberMute),
logMassUnban: mapToPublicFn(logMassUnban), logMemberMuteExpired: makePublicFn(pluginData, logMemberMuteExpired),
logMemberBan: mapToPublicFn(logMemberBan), logMemberMuteRejoin: makePublicFn(pluginData, logMemberMuteRejoin),
logMemberForceban: mapToPublicFn(logMemberForceban), logMemberNickChange: makePublicFn(pluginData, logMemberNickChange),
logMemberJoin: mapToPublicFn(logMemberJoin), logMemberNote: makePublicFn(pluginData, logMemberNote),
logMemberJoinWithPriorRecords: mapToPublicFn(logMemberJoinWithPriorRecords), logMemberRestore: makePublicFn(pluginData, logMemberRestore),
logMemberKick: mapToPublicFn(logMemberKick), logMemberRoleAdd: makePublicFn(pluginData, logMemberRoleAdd),
logMemberLeave: mapToPublicFn(logMemberLeave), logMemberRoleChanges: makePublicFn(pluginData, logMemberRoleChanges),
logMemberMute: mapToPublicFn(logMemberMute), logMemberRoleRemove: makePublicFn(pluginData, logMemberRoleRemove),
logMemberMuteExpired: mapToPublicFn(logMemberMuteExpired), logMemberTimedBan: makePublicFn(pluginData, logMemberTimedBan),
logMemberMuteRejoin: mapToPublicFn(logMemberMuteRejoin), logMemberTimedMute: makePublicFn(pluginData, logMemberTimedMute),
logMemberNickChange: mapToPublicFn(logMemberNickChange), logMemberTimedUnban: makePublicFn(pluginData, logMemberTimedUnban),
logMemberNote: mapToPublicFn(logMemberNote), logMemberTimedUnmute: makePublicFn(pluginData, logMemberTimedUnmute),
logMemberRestore: mapToPublicFn(logMemberRestore), logMemberUnban: makePublicFn(pluginData, logMemberUnban),
logMemberRoleAdd: mapToPublicFn(logMemberRoleAdd), logMemberUnmute: makePublicFn(pluginData, logMemberUnmute),
logMemberRoleChanges: mapToPublicFn(logMemberRoleChanges), logMemberWarn: makePublicFn(pluginData, logMemberWarn),
logMemberRoleRemove: mapToPublicFn(logMemberRoleRemove), logMessageDelete: makePublicFn(pluginData, logMessageDelete),
logMemberTimedBan: mapToPublicFn(logMemberTimedBan), logMessageDeleteAuto: makePublicFn(pluginData, logMessageDeleteAuto),
logMemberTimedMute: mapToPublicFn(logMemberTimedMute), logMessageDeleteBare: makePublicFn(pluginData, logMessageDeleteBare),
logMemberTimedUnban: mapToPublicFn(logMemberTimedUnban), logMessageDeleteBulk: makePublicFn(pluginData, logMessageDeleteBulk),
logMemberTimedUnmute: mapToPublicFn(logMemberTimedUnmute), logMessageEdit: makePublicFn(pluginData, logMessageEdit),
logMemberUnban: mapToPublicFn(logMemberUnban), logMessageSpamDetected: makePublicFn(pluginData, logMessageSpamDetected),
logMemberUnmute: mapToPublicFn(logMemberUnmute), logOtherSpamDetected: makePublicFn(pluginData, logOtherSpamDetected),
logMemberWarn: mapToPublicFn(logMemberWarn), logPostedScheduledMessage: makePublicFn(pluginData, logPostedScheduledMessage),
logMessageDelete: mapToPublicFn(logMessageDelete), logRepeatedMessage: makePublicFn(pluginData, logRepeatedMessage),
logMessageDeleteAuto: mapToPublicFn(logMessageDeleteAuto), logRoleCreate: makePublicFn(pluginData, logRoleCreate),
logMessageDeleteBare: mapToPublicFn(logMessageDeleteBare), logRoleDelete: makePublicFn(pluginData, logRoleDelete),
logMessageDeleteBulk: mapToPublicFn(logMessageDeleteBulk), logRoleUpdate: makePublicFn(pluginData, logRoleUpdate),
logMessageEdit: mapToPublicFn(logMessageEdit), logScheduledMessage: makePublicFn(pluginData, logScheduledMessage),
logMessageSpamDetected: mapToPublicFn(logMessageSpamDetected), logScheduledRepeatedMessage: makePublicFn(pluginData, logScheduledRepeatedMessage),
logOtherSpamDetected: mapToPublicFn(logOtherSpamDetected), logSetAntiraidAuto: makePublicFn(pluginData, logSetAntiraidAuto),
logPostedScheduledMessage: mapToPublicFn(logPostedScheduledMessage), logSetAntiraidUser: makePublicFn(pluginData, logSetAntiraidUser),
logRepeatedMessage: mapToPublicFn(logRepeatedMessage), logStageInstanceCreate: makePublicFn(pluginData, logStageInstanceCreate),
logRoleCreate: mapToPublicFn(logRoleCreate), logStageInstanceDelete: makePublicFn(pluginData, logStageInstanceDelete),
logRoleDelete: mapToPublicFn(logRoleDelete), logStageInstanceUpdate: makePublicFn(pluginData, logStageInstanceUpdate),
logRoleUpdate: mapToPublicFn(logRoleUpdate), logStickerCreate: makePublicFn(pluginData, logStickerCreate),
logScheduledMessage: mapToPublicFn(logScheduledMessage), logStickerDelete: makePublicFn(pluginData, logStickerDelete),
logScheduledRepeatedMessage: mapToPublicFn(logScheduledRepeatedMessage), logStickerUpdate: makePublicFn(pluginData, logStickerUpdate),
logSetAntiraidAuto: mapToPublicFn(logSetAntiraidAuto), logThreadCreate: makePublicFn(pluginData, logThreadCreate),
logSetAntiraidUser: mapToPublicFn(logSetAntiraidUser), logThreadDelete: makePublicFn(pluginData, logThreadDelete),
logStageInstanceCreate: mapToPublicFn(logStageInstanceCreate), logThreadUpdate: makePublicFn(pluginData, logThreadUpdate),
logStageInstanceDelete: mapToPublicFn(logStageInstanceDelete), logVoiceChannelForceDisconnect: makePublicFn(pluginData, logVoiceChannelForceDisconnect),
logStageInstanceUpdate: mapToPublicFn(logStageInstanceUpdate), logVoiceChannelForceMove: makePublicFn(pluginData, logVoiceChannelForceMove),
logStickerCreate: mapToPublicFn(logStickerCreate), logVoiceChannelJoin: makePublicFn(pluginData, logVoiceChannelJoin),
logStickerDelete: mapToPublicFn(logStickerDelete), logVoiceChannelLeave: makePublicFn(pluginData, logVoiceChannelLeave),
logStickerUpdate: mapToPublicFn(logStickerUpdate), logVoiceChannelMove: makePublicFn(pluginData, logVoiceChannelMove),
logThreadCreate: mapToPublicFn(logThreadCreate), logDmFailed: makePublicFn(pluginData, logDmFailed),
logThreadDelete: mapToPublicFn(logThreadDelete), };
logThreadUpdate: mapToPublicFn(logThreadUpdate),
logVoiceChannelForceDisconnect: mapToPublicFn(logVoiceChannelForceDisconnect),
logVoiceChannelForceMove: mapToPublicFn(logVoiceChannelForceMove),
logVoiceChannelJoin: mapToPublicFn(logVoiceChannelJoin),
logVoiceChannelLeave: mapToPublicFn(logVoiceChannelLeave),
logVoiceChannelMove: mapToPublicFn(logVoiceChannelMove),
logDmFailed: mapToPublicFn(logDmFailed),
}, },
beforeLoad(pluginData) { beforeLoad(pluginData) {

View file

@ -1,4 +1,4 @@
import { GuildMember, Message, Snowflake } from "discord.js"; import { Message } from "discord.js";
import { EventEmitter } from "events"; import { EventEmitter } from "events";
import { guildPlugin } from "knub"; import { guildPlugin } from "knub";
import { Queue } from "../../Queue"; import { Queue } from "../../Queue";
@ -7,7 +7,7 @@ import { onGuildEvent } from "../../data/GuildEvents";
import { GuildLogs } from "../../data/GuildLogs"; import { GuildLogs } from "../../data/GuildLogs";
import { GuildMutes } from "../../data/GuildMutes"; import { GuildMutes } from "../../data/GuildMutes";
import { GuildTempbans } from "../../data/GuildTempbans"; import { GuildTempbans } from "../../data/GuildTempbans";
import { mapToPublicFn } from "../../pluginUtils"; import { makePublicFn, mapToPublicFn } from "../../pluginUtils";
import { MINUTES } from "../../utils"; import { MINUTES } from "../../utils";
import { CasesPlugin } from "../Cases/CasesPlugin"; import { CasesPlugin } from "../Cases/CasesPlugin";
import { LogsPlugin } from "../Logs/LogsPlugin"; import { LogsPlugin } from "../Logs/LogsPlugin";
@ -47,7 +47,7 @@ import { offModActionsEvent } from "./functions/offModActionsEvent";
import { onModActionsEvent } from "./functions/onModActionsEvent"; import { onModActionsEvent } from "./functions/onModActionsEvent";
import { updateCase } from "./functions/updateCase"; import { updateCase } from "./functions/updateCase";
import { warnMember } from "./functions/warnMember"; import { warnMember } from "./functions/warnMember";
import { BanOptions, KickOptions, ModActionsPluginType, WarnOptions, zModActionsConfig } from "./types"; import { ModActionsPluginType, zModActionsConfig } from "./types";
const defaultOptions = { const defaultOptions = {
config: { config: {
@ -147,42 +147,18 @@ export const ModActionsPlugin = guildPlugin<ModActionsPluginType>()({
DeleteCaseCmd, DeleteCaseCmd,
], ],
public: { public(pluginData) {
warnMember(pluginData) { return {
return (member: GuildMember, reason: string, warnOptions?: WarnOptions) => { warnMember: makePublicFn(pluginData, warnMember),
warnMember(pluginData, member, reason, warnOptions); kickMember: makePublicFn(pluginData, kickMember),
}; banUserId: makePublicFn(pluginData, banUserId),
}, updateCase: (msg: Message, caseNumber: number | null, note: string) =>
updateCase(pluginData, msg, { caseNumber, note }),
kickMember(pluginData) { hasMutePermission: makePublicFn(pluginData, hasMutePermission),
return (member: GuildMember, reason: string, kickOptions?: KickOptions) => { on: mapToPublicFn(onModActionsEvent),
kickMember(pluginData, member, reason, kickOptions); off: mapToPublicFn(offModActionsEvent),
}; getEventEmitter: () => pluginData.state.events,
}, };
banUserId(pluginData) {
return (userId: string, reason?: string, banOptions?: BanOptions, banTime?: number) => {
banUserId(pluginData, userId, reason, banOptions, banTime);
};
},
updateCase(pluginData) {
return (msg: Message, caseNumber: number | null, note: string) => {
updateCase(pluginData, msg, { caseNumber, note });
};
},
hasMutePermission(pluginData) {
return (member: GuildMember, channelId: Snowflake) => {
return hasMutePermission(pluginData, member, channelId);
};
},
on: mapToPublicFn(onModActionsEvent),
off: mapToPublicFn(offModActionsEvent),
getEventEmitter(pluginData) {
return () => pluginData.state.events;
},
}, },
beforeLoad(pluginData) { beforeLoad(pluginData) {

View file

@ -6,7 +6,7 @@ import { GuildCases } from "../../data/GuildCases";
import { onGuildEvent } from "../../data/GuildEvents"; import { onGuildEvent } from "../../data/GuildEvents";
import { GuildLogs } from "../../data/GuildLogs"; import { GuildLogs } from "../../data/GuildLogs";
import { GuildMutes } from "../../data/GuildMutes"; import { GuildMutes } from "../../data/GuildMutes";
import { mapToPublicFn } from "../../pluginUtils"; import { makePublicFn } from "../../pluginUtils";
import { CasesPlugin } from "../Cases/CasesPlugin"; import { CasesPlugin } from "../Cases/CasesPlugin";
import { LogsPlugin } from "../Logs/LogsPlugin"; import { LogsPlugin } from "../Logs/LogsPlugin";
import { RoleManagerPlugin } from "../RoleManager/RoleManagerPlugin.js"; import { RoleManagerPlugin } from "../RoleManager/RoleManagerPlugin.js";
@ -84,21 +84,18 @@ export const MutesPlugin = guildPlugin<MutesPluginType>()({
RegisterManualTimeoutsEvt, RegisterManualTimeoutsEvt,
], ],
public: { public(pluginData) {
muteUser: mapToPublicFn(muteUser), return {
unmuteUser: mapToPublicFn(unmuteUser), muteUser: makePublicFn(pluginData, muteUser),
hasMutedRole(pluginData) { unmuteUser: makePublicFn(pluginData, unmuteUser),
return (member: GuildMember) => { hasMutedRole: (member: GuildMember) => {
const muteRole = pluginData.config.get().mute_role; const muteRole = pluginData.config.get().mute_role;
return muteRole ? member.roles.cache.has(muteRole as Snowflake) : false; return muteRole ? member.roles.cache.has(muteRole as Snowflake) : false;
}; },
}, on: makePublicFn(pluginData, onMutesEvent),
off: makePublicFn(pluginData, offMutesEvent),
on: mapToPublicFn(onMutesEvent), getEventEmitter: () => pluginData.state.events,
off: mapToPublicFn(offMutesEvent), };
getEventEmitter(pluginData) {
return () => pluginData.state.events;
},
}, },
beforeLoad(pluginData) { beforeLoad(pluginData) {

View file

@ -1,6 +1,6 @@
import { PluginOptions, guildPlugin } from "knub"; import { PluginOptions, guildPlugin } from "knub";
import { hasPhishermanMasterAPIKey, phishermanApiKeyIsValid } from "../../data/Phisherman"; import { hasPhishermanMasterAPIKey, phishermanApiKeyIsValid } from "../../data/Phisherman";
import { mapToPublicFn } from "../../pluginUtils"; import { makePublicFn } from "../../pluginUtils";
import { getDomainInfo } from "./functions/getDomainInfo"; import { getDomainInfo } from "./functions/getDomainInfo";
import { PhishermanPluginType, zPhishermanConfig } from "./types"; import { PhishermanPluginType, zPhishermanConfig } from "./types";
@ -17,9 +17,10 @@ export const PhishermanPlugin = guildPlugin<PhishermanPluginType>()({
configParser: (input) => zPhishermanConfig.parse(input), configParser: (input) => zPhishermanConfig.parse(input),
defaultOptions, defaultOptions,
// prettier-ignore public(pluginData) {
public: { return {
getDomainInfo: mapToPublicFn(getDomainInfo), getDomainInfo: makePublicFn(pluginData, getDomainInfo),
};
}, },
async beforeLoad(pluginData) { async beforeLoad(pluginData) {

View file

@ -1,6 +1,6 @@
import { guildPlugin } from "knub"; import { guildPlugin } from "knub";
import { GuildRoleQueue } from "../../data/GuildRoleQueue"; import { GuildRoleQueue } from "../../data/GuildRoleQueue";
import { mapToPublicFn } from "../../pluginUtils"; import { makePublicFn } from "../../pluginUtils";
import { LogsPlugin } from "../Logs/LogsPlugin"; import { LogsPlugin } from "../Logs/LogsPlugin";
import { addPriorityRole } from "./functions/addPriorityRole"; import { addPriorityRole } from "./functions/addPriorityRole";
import { addRole } from "./functions/addRole"; import { addRole } from "./functions/addRole";
@ -15,11 +15,13 @@ export const RoleManagerPlugin = guildPlugin<RoleManagerPluginType>()({
dependencies: () => [LogsPlugin], dependencies: () => [LogsPlugin],
configParser: (input) => zRoleManagerConfig.parse(input), configParser: (input) => zRoleManagerConfig.parse(input),
public: { public(pluginData) {
addRole: mapToPublicFn(addRole), return {
removeRole: mapToPublicFn(removeRole), addRole: makePublicFn(pluginData, addRole),
addPriorityRole: mapToPublicFn(addPriorityRole), removeRole: makePublicFn(pluginData, removeRole),
removePriorityRole: mapToPublicFn(removePriorityRole), addPriorityRole: makePublicFn(pluginData, addPriorityRole),
removePriorityRole: makePublicFn(pluginData, removePriorityRole),
};
}, },
beforeLoad(pluginData) { beforeLoad(pluginData) {

View file

@ -6,7 +6,7 @@ import { GuildArchives } from "../../data/GuildArchives";
import { GuildLogs } from "../../data/GuildLogs"; import { GuildLogs } from "../../data/GuildLogs";
import { GuildSavedMessages } from "../../data/GuildSavedMessages"; import { GuildSavedMessages } from "../../data/GuildSavedMessages";
import { GuildTags } from "../../data/GuildTags"; import { GuildTags } from "../../data/GuildTags";
import { mapToPublicFn } from "../../pluginUtils"; import { makePublicFn } from "../../pluginUtils";
import { convertDelayStringToMS } from "../../utils"; import { convertDelayStringToMS } from "../../utils";
import { LogsPlugin } from "../Logs/LogsPlugin"; import { LogsPlugin } from "../Logs/LogsPlugin";
import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin"; import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
@ -71,9 +71,11 @@ export const TagsPlugin = guildPlugin<TagsPluginType>()({
onMessageDelete, onMessageDelete,
], ],
public: { public(pluginData) {
renderTagBody: mapToPublicFn(renderTagBody), return {
findTagByName: mapToPublicFn(findTagByName), renderTagBody: makePublicFn(pluginData, renderTagBody),
findTagByName: makePublicFn(pluginData, findTagByName),
};
}, },
configParser: (input) => zTagsConfig.parse(input), configParser: (input) => zTagsConfig.parse(input),

View file

@ -1,6 +1,6 @@
import { PluginOptions, guildPlugin } from "knub"; import { PluginOptions, guildPlugin } from "knub";
import { GuildMemberTimezones } from "../../data/GuildMemberTimezones"; import { GuildMemberTimezones } from "../../data/GuildMemberTimezones";
import { mapToPublicFn } from "../../pluginUtils"; import { makePublicFn } from "../../pluginUtils";
import { ResetTimezoneCmd } from "./commands/ResetTimezoneCmd"; import { ResetTimezoneCmd } from "./commands/ResetTimezoneCmd";
import { SetTimezoneCmd } from "./commands/SetTimezoneCmd"; import { SetTimezoneCmd } from "./commands/SetTimezoneCmd";
import { ViewTimezoneCmd } from "./commands/ViewTimezoneCmd"; import { ViewTimezoneCmd } from "./commands/ViewTimezoneCmd";
@ -42,12 +42,14 @@ export const TimeAndDatePlugin = guildPlugin<TimeAndDatePluginType>()({
ViewTimezoneCmd, ViewTimezoneCmd,
], ],
public: { public(pluginData) {
getGuildTz: mapToPublicFn(getGuildTz), return {
inGuildTz: mapToPublicFn(inGuildTz), getGuildTz: makePublicFn(pluginData, getGuildTz),
getMemberTz: mapToPublicFn(getMemberTz), inGuildTz: makePublicFn(pluginData, inGuildTz),
inMemberTz: mapToPublicFn(inMemberTz), getMemberTz: makePublicFn(pluginData, getMemberTz),
getDateFormat: mapToPublicFn(getDateFormat), inMemberTz: makePublicFn(pluginData, inMemberTz),
getDateFormat: makePublicFn(pluginData, getDateFormat),
};
}, },
beforeLoad(pluginData) { beforeLoad(pluginData) {

View file

@ -1,11 +1,11 @@
import { GuildMember, Snowflake } from "discord.js"; import { Snowflake } from "discord.js";
import { PluginOptions, guildPlugin } from "knub"; import { PluginOptions, guildPlugin } from "knub";
import { GuildArchives } from "../../data/GuildArchives"; import { GuildArchives } from "../../data/GuildArchives";
import { GuildCases } from "../../data/GuildCases"; import { GuildCases } from "../../data/GuildCases";
import { GuildLogs } from "../../data/GuildLogs"; import { GuildLogs } from "../../data/GuildLogs";
import { GuildSavedMessages } from "../../data/GuildSavedMessages"; import { GuildSavedMessages } from "../../data/GuildSavedMessages";
import { Supporters } from "../../data/Supporters"; import { Supporters } from "../../data/Supporters";
import { sendSuccessMessage } from "../../pluginUtils"; import { makePublicFn, sendSuccessMessage } from "../../pluginUtils";
import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners"; import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners";
import { LogsPlugin } from "../Logs/LogsPlugin"; import { LogsPlugin } from "../Logs/LogsPlugin";
import { ModActionsPlugin } from "../ModActions/ModActionsPlugin"; import { ModActionsPlugin } from "../ModActions/ModActionsPlugin";
@ -14,7 +14,7 @@ import { AboutCmd } from "./commands/AboutCmd";
import { AvatarCmd } from "./commands/AvatarCmd"; import { AvatarCmd } from "./commands/AvatarCmd";
import { BanSearchCmd } from "./commands/BanSearchCmd"; import { BanSearchCmd } from "./commands/BanSearchCmd";
import { ChannelInfoCmd } from "./commands/ChannelInfoCmd"; import { ChannelInfoCmd } from "./commands/ChannelInfoCmd";
import { CleanArgs, CleanCmd, cleanCmd } from "./commands/CleanCmd"; import { CleanCmd, cleanCmd } from "./commands/CleanCmd";
import { ContextCmd } from "./commands/ContextCmd"; import { ContextCmd } from "./commands/ContextCmd";
import { EmojiInfoCmd } from "./commands/EmojiInfoCmd"; import { EmojiInfoCmd } from "./commands/EmojiInfoCmd";
import { HelpCmd } from "./commands/HelpCmd"; import { HelpCmd } from "./commands/HelpCmd";
@ -155,24 +155,12 @@ export const UtilityPlugin = guildPlugin<UtilityPluginType>()({
AutoJoinThreadSyncEvt, AutoJoinThreadSyncEvt,
], ],
public: { public(pluginData) {
clean(pluginData) { return {
return (args: CleanArgs, msg) => { clean: makePublicFn(pluginData, cleanCmd),
cleanCmd(pluginData, args, msg); userInfo: (userId: Snowflake) => getUserInfoEmbed(pluginData, userId, false),
}; hasPermission: makePublicFn(pluginData, hasPermission),
}, };
userInfo(pluginData) {
return (userId: Snowflake) => {
return getUserInfoEmbed(pluginData, userId, false);
};
},
hasPermission(pluginData) {
return (member: GuildMember, channelId: Snowflake, permission: string) => {
return hasPermission(pluginData, member, channelId, permission);
};
},
}, },
beforeLoad(pluginData) { beforeLoad(pluginData) {

8
package-lock.json generated
View file

@ -44,7 +44,7 @@
"fp-ts": "^2.0.1", "fp-ts": "^2.0.1",
"humanize-duration": "^3.15.0", "humanize-duration": "^3.15.0",
"js-yaml": "^3.13.1", "js-yaml": "^3.13.1",
"knub": "^32.0.0-next.20", "knub": "^32.0.0-next.21",
"knub-command-manager": "^9.1.0", "knub-command-manager": "^9.1.0",
"last-commit-log": "^2.1.0", "last-commit-log": "^2.1.0",
"lodash.chunk": "^4.2.0", "lodash.chunk": "^4.2.0",
@ -13250,9 +13250,9 @@
} }
}, },
"node_modules/knub": { "node_modules/knub": {
"version": "32.0.0-next.20", "version": "32.0.0-next.21",
"resolved": "https://registry.npmjs.org/knub/-/knub-32.0.0-next.20.tgz", "resolved": "https://registry.npmjs.org/knub/-/knub-32.0.0-next.21.tgz",
"integrity": "sha512-RNi6VC4H83HShujPRuIUsuuHhVwvWY4qIaVQSswZPUGtCgY+h8rKtPQ5mCcNAroMJJWr4rVXVXUG7fOfY/ZyBg==", "integrity": "sha512-ZzY9uOxKe0ZKCKQ4yp26SBxuPl6Gac1LGNpXMPGydYX/0EIL1q3zunYAwfpTpgc7LxR02hmYdDcsBCj8ri4xkA==",
"dependencies": { "dependencies": {
"discord-api-types": "^0.37.67", "discord-api-types": "^0.37.67",
"discord.js": "^14.14.1", "discord.js": "^14.14.1",