3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-14 21:31:50 +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",
"humanize-duration": "^3.15.0",
"js-yaml": "^3.13.1",
"knub": "^32.0.0-next.20",
"knub": "^32.0.0-next.21",
"knub-command-manager": "^9.1.0",
"last-commit-log": "^2.1.0",
"lodash.chunk": "^4.2.0",

View file

@ -10,7 +10,7 @@ import {
PermissionsBitField,
TextBasedChannel,
} 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 { isStaff } from "./staff";
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 { CaseTypes } from "../../data/CaseTypes";
import { GuildArchives } from "../../data/GuildArchives";
import { GuildCases } from "../../data/GuildCases";
import { GuildLogs } from "../../data/GuildLogs";
import { Case } from "../../data/entities/Case";
import { mapToPublicFn } from "../../pluginUtils";
import { makePublicFn } from "../../pluginUtils";
import { InternalPosterPlugin } from "../InternalPoster/InternalPosterPlugin";
import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
import { createCase } from "./functions/createCase";
@ -15,7 +13,7 @@ import { getCaseTypeAmountForUserId } from "./functions/getCaseTypeAmountForUser
import { getRecentCasesByMod } from "./functions/getRecentCasesByMod";
import { getTotalCasesByMod } from "./functions/getTotalCasesByMod";
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
function getLogsPlugin(): Promise<any> {
@ -40,36 +38,17 @@ export const CasesPlugin = guildPlugin<CasesPluginType>()({
configParser: (input) => zCasesConfig.parse(input),
defaultOptions,
public: {
createCase(pluginData) {
return (args: CaseArgs) => {
return createCase(pluginData, args);
};
},
createCaseNote(pluginData) {
return (args: CaseNoteArgs) => {
return createCaseNote(pluginData, args);
};
},
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),
public(pluginData) {
return {
createCase: makePublicFn(pluginData, createCase),
createCaseNote: makePublicFn(pluginData, createCaseNote),
postCaseToCaseLogChannel: makePublicFn(pluginData, postCaseToCaseLogChannel),
getCaseTypeAmountForUserId: makePublicFn(pluginData, getCaseTypeAmountForUserId),
getTotalCasesByMod: makePublicFn(pluginData, getTotalCasesByMod),
getRecentCasesByMod: makePublicFn(pluginData, getRecentCasesByMod),
getCaseEmbed: makePublicFn(pluginData, getCaseEmbed),
getCaseSummary: makePublicFn(pluginData, getCaseSummary),
};
},
afterLoad(pluginData) {

View file

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

View file

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

View file

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

View file

@ -6,9 +6,9 @@ import { GuildLogs } from "../../data/GuildLogs";
import { GuildSavedMessages } from "../../data/GuildSavedMessages";
import { LogType } from "../../data/LogType";
import { logger } from "../../logger";
import { mapToPublicFn } from "../../pluginUtils";
import { makePublicFn } from "../../pluginUtils";
import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners";
import { TypedTemplateSafeValueContainer, createTypedTemplateSafeValueContainer } from "../../templateFormatter";
import { createTypedTemplateSafeValueContainer } from "../../templateFormatter";
import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
import { LogsChannelCreateEvt, LogsChannelDeleteEvt, LogsChannelUpdateEvt } from "./events/LogsChannelModifyEvts";
import {
@ -30,7 +30,7 @@ import {
import { LogsThreadCreateEvt, LogsThreadDeleteEvt, LogsThreadUpdateEvt } from "./events/LogsThreadModifyEvts";
import { LogsGuildMemberUpdateEvt } from "./events/LogsUserUpdateEvts";
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 { log } from "./util/log";
import { onMessageDelete } from "./util/onMessageDelete";
@ -172,86 +172,79 @@ export const LogsPlugin = guildPlugin<LogsPluginType>()({
LogsGuildMemberRoleChangeEvt,
],
public: {
getLogMessage: (pluginData) => {
return <TLogType extends keyof ILogTypeData>(
type: TLogType,
data: TypedTemplateSafeValueContainer<ILogTypeData[TLogType]>,
opts?: Pick<TLogChannel, "format" | "timestamp_format" | "include_embed_timestamp">,
) => {
return getLogMessage(pluginData, type, data, opts);
};
},
logAutomodAction: mapToPublicFn(logAutomodAction),
logBotAlert: mapToPublicFn(logBotAlert),
logCaseCreate: mapToPublicFn(logCaseCreate),
logCaseDelete: mapToPublicFn(logCaseDelete),
logCaseUpdate: mapToPublicFn(logCaseUpdate),
logCensor: mapToPublicFn(logCensor),
logChannelCreate: mapToPublicFn(logChannelCreate),
logChannelDelete: mapToPublicFn(logChannelDelete),
logChannelUpdate: mapToPublicFn(logChannelUpdate),
logClean: mapToPublicFn(logClean),
logEmojiCreate: mapToPublicFn(logEmojiCreate),
logEmojiDelete: mapToPublicFn(logEmojiDelete),
logEmojiUpdate: mapToPublicFn(logEmojiUpdate),
logMassBan: mapToPublicFn(logMassBan),
logMassMute: mapToPublicFn(logMassMute),
logMassUnban: mapToPublicFn(logMassUnban),
logMemberBan: mapToPublicFn(logMemberBan),
logMemberForceban: mapToPublicFn(logMemberForceban),
logMemberJoin: mapToPublicFn(logMemberJoin),
logMemberJoinWithPriorRecords: mapToPublicFn(logMemberJoinWithPriorRecords),
logMemberKick: mapToPublicFn(logMemberKick),
logMemberLeave: mapToPublicFn(logMemberLeave),
logMemberMute: mapToPublicFn(logMemberMute),
logMemberMuteExpired: mapToPublicFn(logMemberMuteExpired),
logMemberMuteRejoin: mapToPublicFn(logMemberMuteRejoin),
logMemberNickChange: mapToPublicFn(logMemberNickChange),
logMemberNote: mapToPublicFn(logMemberNote),
logMemberRestore: mapToPublicFn(logMemberRestore),
logMemberRoleAdd: mapToPublicFn(logMemberRoleAdd),
logMemberRoleChanges: mapToPublicFn(logMemberRoleChanges),
logMemberRoleRemove: mapToPublicFn(logMemberRoleRemove),
logMemberTimedBan: mapToPublicFn(logMemberTimedBan),
logMemberTimedMute: mapToPublicFn(logMemberTimedMute),
logMemberTimedUnban: mapToPublicFn(logMemberTimedUnban),
logMemberTimedUnmute: mapToPublicFn(logMemberTimedUnmute),
logMemberUnban: mapToPublicFn(logMemberUnban),
logMemberUnmute: mapToPublicFn(logMemberUnmute),
logMemberWarn: mapToPublicFn(logMemberWarn),
logMessageDelete: mapToPublicFn(logMessageDelete),
logMessageDeleteAuto: mapToPublicFn(logMessageDeleteAuto),
logMessageDeleteBare: mapToPublicFn(logMessageDeleteBare),
logMessageDeleteBulk: mapToPublicFn(logMessageDeleteBulk),
logMessageEdit: mapToPublicFn(logMessageEdit),
logMessageSpamDetected: mapToPublicFn(logMessageSpamDetected),
logOtherSpamDetected: mapToPublicFn(logOtherSpamDetected),
logPostedScheduledMessage: mapToPublicFn(logPostedScheduledMessage),
logRepeatedMessage: mapToPublicFn(logRepeatedMessage),
logRoleCreate: mapToPublicFn(logRoleCreate),
logRoleDelete: mapToPublicFn(logRoleDelete),
logRoleUpdate: mapToPublicFn(logRoleUpdate),
logScheduledMessage: mapToPublicFn(logScheduledMessage),
logScheduledRepeatedMessage: mapToPublicFn(logScheduledRepeatedMessage),
logSetAntiraidAuto: mapToPublicFn(logSetAntiraidAuto),
logSetAntiraidUser: mapToPublicFn(logSetAntiraidUser),
logStageInstanceCreate: mapToPublicFn(logStageInstanceCreate),
logStageInstanceDelete: mapToPublicFn(logStageInstanceDelete),
logStageInstanceUpdate: mapToPublicFn(logStageInstanceUpdate),
logStickerCreate: mapToPublicFn(logStickerCreate),
logStickerDelete: mapToPublicFn(logStickerDelete),
logStickerUpdate: mapToPublicFn(logStickerUpdate),
logThreadCreate: mapToPublicFn(logThreadCreate),
logThreadDelete: mapToPublicFn(logThreadDelete),
logThreadUpdate: mapToPublicFn(logThreadUpdate),
logVoiceChannelForceDisconnect: mapToPublicFn(logVoiceChannelForceDisconnect),
logVoiceChannelForceMove: mapToPublicFn(logVoiceChannelForceMove),
logVoiceChannelJoin: mapToPublicFn(logVoiceChannelJoin),
logVoiceChannelLeave: mapToPublicFn(logVoiceChannelLeave),
logVoiceChannelMove: mapToPublicFn(logVoiceChannelMove),
logDmFailed: mapToPublicFn(logDmFailed),
public(pluginData) {
return {
getLogMessage: makePublicFn(pluginData, getLogMessage),
logAutomodAction: makePublicFn(pluginData, logAutomodAction),
logBotAlert: makePublicFn(pluginData, logBotAlert),
logCaseCreate: makePublicFn(pluginData, logCaseCreate),
logCaseDelete: makePublicFn(pluginData, logCaseDelete),
logCaseUpdate: makePublicFn(pluginData, logCaseUpdate),
logCensor: makePublicFn(pluginData, logCensor),
logChannelCreate: makePublicFn(pluginData, logChannelCreate),
logChannelDelete: makePublicFn(pluginData, logChannelDelete),
logChannelUpdate: makePublicFn(pluginData, logChannelUpdate),
logClean: makePublicFn(pluginData, logClean),
logEmojiCreate: makePublicFn(pluginData, logEmojiCreate),
logEmojiDelete: makePublicFn(pluginData, logEmojiDelete),
logEmojiUpdate: makePublicFn(pluginData, logEmojiUpdate),
logMassBan: makePublicFn(pluginData, logMassBan),
logMassMute: makePublicFn(pluginData, logMassMute),
logMassUnban: makePublicFn(pluginData, logMassUnban),
logMemberBan: makePublicFn(pluginData, logMemberBan),
logMemberForceban: makePublicFn(pluginData, logMemberForceban),
logMemberJoin: makePublicFn(pluginData, logMemberJoin),
logMemberJoinWithPriorRecords: makePublicFn(pluginData, logMemberJoinWithPriorRecords),
logMemberKick: makePublicFn(pluginData, logMemberKick),
logMemberLeave: makePublicFn(pluginData, logMemberLeave),
logMemberMute: makePublicFn(pluginData, logMemberMute),
logMemberMuteExpired: makePublicFn(pluginData, logMemberMuteExpired),
logMemberMuteRejoin: makePublicFn(pluginData, logMemberMuteRejoin),
logMemberNickChange: makePublicFn(pluginData, logMemberNickChange),
logMemberNote: makePublicFn(pluginData, logMemberNote),
logMemberRestore: makePublicFn(pluginData, logMemberRestore),
logMemberRoleAdd: makePublicFn(pluginData, logMemberRoleAdd),
logMemberRoleChanges: makePublicFn(pluginData, logMemberRoleChanges),
logMemberRoleRemove: makePublicFn(pluginData, logMemberRoleRemove),
logMemberTimedBan: makePublicFn(pluginData, logMemberTimedBan),
logMemberTimedMute: makePublicFn(pluginData, logMemberTimedMute),
logMemberTimedUnban: makePublicFn(pluginData, logMemberTimedUnban),
logMemberTimedUnmute: makePublicFn(pluginData, logMemberTimedUnmute),
logMemberUnban: makePublicFn(pluginData, logMemberUnban),
logMemberUnmute: makePublicFn(pluginData, logMemberUnmute),
logMemberWarn: makePublicFn(pluginData, logMemberWarn),
logMessageDelete: makePublicFn(pluginData, logMessageDelete),
logMessageDeleteAuto: makePublicFn(pluginData, logMessageDeleteAuto),
logMessageDeleteBare: makePublicFn(pluginData, logMessageDeleteBare),
logMessageDeleteBulk: makePublicFn(pluginData, logMessageDeleteBulk),
logMessageEdit: makePublicFn(pluginData, logMessageEdit),
logMessageSpamDetected: makePublicFn(pluginData, logMessageSpamDetected),
logOtherSpamDetected: makePublicFn(pluginData, logOtherSpamDetected),
logPostedScheduledMessage: makePublicFn(pluginData, logPostedScheduledMessage),
logRepeatedMessage: makePublicFn(pluginData, logRepeatedMessage),
logRoleCreate: makePublicFn(pluginData, logRoleCreate),
logRoleDelete: makePublicFn(pluginData, logRoleDelete),
logRoleUpdate: makePublicFn(pluginData, logRoleUpdate),
logScheduledMessage: makePublicFn(pluginData, logScheduledMessage),
logScheduledRepeatedMessage: makePublicFn(pluginData, logScheduledRepeatedMessage),
logSetAntiraidAuto: makePublicFn(pluginData, logSetAntiraidAuto),
logSetAntiraidUser: makePublicFn(pluginData, logSetAntiraidUser),
logStageInstanceCreate: makePublicFn(pluginData, logStageInstanceCreate),
logStageInstanceDelete: makePublicFn(pluginData, logStageInstanceDelete),
logStageInstanceUpdate: makePublicFn(pluginData, logStageInstanceUpdate),
logStickerCreate: makePublicFn(pluginData, logStickerCreate),
logStickerDelete: makePublicFn(pluginData, logStickerDelete),
logStickerUpdate: makePublicFn(pluginData, logStickerUpdate),
logThreadCreate: makePublicFn(pluginData, logThreadCreate),
logThreadDelete: makePublicFn(pluginData, logThreadDelete),
logThreadUpdate: makePublicFn(pluginData, logThreadUpdate),
logVoiceChannelForceDisconnect: makePublicFn(pluginData, logVoiceChannelForceDisconnect),
logVoiceChannelForceMove: makePublicFn(pluginData, logVoiceChannelForceMove),
logVoiceChannelJoin: makePublicFn(pluginData, logVoiceChannelJoin),
logVoiceChannelLeave: makePublicFn(pluginData, logVoiceChannelLeave),
logVoiceChannelMove: makePublicFn(pluginData, logVoiceChannelMove),
logDmFailed: makePublicFn(pluginData, logDmFailed),
};
},
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 { guildPlugin } from "knub";
import { Queue } from "../../Queue";
@ -7,7 +7,7 @@ import { onGuildEvent } from "../../data/GuildEvents";
import { GuildLogs } from "../../data/GuildLogs";
import { GuildMutes } from "../../data/GuildMutes";
import { GuildTempbans } from "../../data/GuildTempbans";
import { mapToPublicFn } from "../../pluginUtils";
import { makePublicFn, mapToPublicFn } from "../../pluginUtils";
import { MINUTES } from "../../utils";
import { CasesPlugin } from "../Cases/CasesPlugin";
import { LogsPlugin } from "../Logs/LogsPlugin";
@ -47,7 +47,7 @@ import { offModActionsEvent } from "./functions/offModActionsEvent";
import { onModActionsEvent } from "./functions/onModActionsEvent";
import { updateCase } from "./functions/updateCase";
import { warnMember } from "./functions/warnMember";
import { BanOptions, KickOptions, ModActionsPluginType, WarnOptions, zModActionsConfig } from "./types";
import { ModActionsPluginType, zModActionsConfig } from "./types";
const defaultOptions = {
config: {
@ -147,42 +147,18 @@ export const ModActionsPlugin = guildPlugin<ModActionsPluginType>()({
DeleteCaseCmd,
],
public: {
warnMember(pluginData) {
return (member: GuildMember, reason: string, warnOptions?: WarnOptions) => {
warnMember(pluginData, member, reason, warnOptions);
};
},
kickMember(pluginData) {
return (member: GuildMember, reason: string, kickOptions?: KickOptions) => {
kickMember(pluginData, member, reason, kickOptions);
};
},
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;
},
public(pluginData) {
return {
warnMember: makePublicFn(pluginData, warnMember),
kickMember: makePublicFn(pluginData, kickMember),
banUserId: makePublicFn(pluginData, banUserId),
updateCase: (msg: Message, caseNumber: number | null, note: string) =>
updateCase(pluginData, msg, { caseNumber, note }),
hasMutePermission: makePublicFn(pluginData, hasMutePermission),
on: mapToPublicFn(onModActionsEvent),
off: mapToPublicFn(offModActionsEvent),
getEventEmitter: () => pluginData.state.events,
};
},
beforeLoad(pluginData) {

View file

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

View file

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

View file

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

View file

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

View file

@ -1,6 +1,6 @@
import { PluginOptions, guildPlugin } from "knub";
import { GuildMemberTimezones } from "../../data/GuildMemberTimezones";
import { mapToPublicFn } from "../../pluginUtils";
import { makePublicFn } from "../../pluginUtils";
import { ResetTimezoneCmd } from "./commands/ResetTimezoneCmd";
import { SetTimezoneCmd } from "./commands/SetTimezoneCmd";
import { ViewTimezoneCmd } from "./commands/ViewTimezoneCmd";
@ -42,12 +42,14 @@ export const TimeAndDatePlugin = guildPlugin<TimeAndDatePluginType>()({
ViewTimezoneCmd,
],
public: {
getGuildTz: mapToPublicFn(getGuildTz),
inGuildTz: mapToPublicFn(inGuildTz),
getMemberTz: mapToPublicFn(getMemberTz),
inMemberTz: mapToPublicFn(inMemberTz),
getDateFormat: mapToPublicFn(getDateFormat),
public(pluginData) {
return {
getGuildTz: makePublicFn(pluginData, getGuildTz),
inGuildTz: makePublicFn(pluginData, inGuildTz),
getMemberTz: makePublicFn(pluginData, getMemberTz),
inMemberTz: makePublicFn(pluginData, inMemberTz),
getDateFormat: makePublicFn(pluginData, getDateFormat),
};
},
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 { GuildArchives } from "../../data/GuildArchives";
import { GuildCases } from "../../data/GuildCases";
import { GuildLogs } from "../../data/GuildLogs";
import { GuildSavedMessages } from "../../data/GuildSavedMessages";
import { Supporters } from "../../data/Supporters";
import { sendSuccessMessage } from "../../pluginUtils";
import { makePublicFn, sendSuccessMessage } from "../../pluginUtils";
import { discardRegExpRunner, getRegExpRunner } from "../../regExpRunners";
import { LogsPlugin } from "../Logs/LogsPlugin";
import { ModActionsPlugin } from "../ModActions/ModActionsPlugin";
@ -14,7 +14,7 @@ import { AboutCmd } from "./commands/AboutCmd";
import { AvatarCmd } from "./commands/AvatarCmd";
import { BanSearchCmd } from "./commands/BanSearchCmd";
import { ChannelInfoCmd } from "./commands/ChannelInfoCmd";
import { CleanArgs, CleanCmd, cleanCmd } from "./commands/CleanCmd";
import { CleanCmd, cleanCmd } from "./commands/CleanCmd";
import { ContextCmd } from "./commands/ContextCmd";
import { EmojiInfoCmd } from "./commands/EmojiInfoCmd";
import { HelpCmd } from "./commands/HelpCmd";
@ -155,24 +155,12 @@ export const UtilityPlugin = guildPlugin<UtilityPluginType>()({
AutoJoinThreadSyncEvt,
],
public: {
clean(pluginData) {
return (args: CleanArgs, msg) => {
cleanCmd(pluginData, args, msg);
};
},
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);
};
},
public(pluginData) {
return {
clean: makePublicFn(pluginData, cleanCmd),
userInfo: (userId: Snowflake) => getUserInfoEmbed(pluginData, userId, false),
hasPermission: makePublicFn(pluginData, hasPermission),
};
},
beforeLoad(pluginData) {

8
package-lock.json generated
View file

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