3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-18 23:09:59 +00:00
zeppelin/backend/src/plugins/Cases/CasesPlugin.ts

89 lines
3 KiB
TypeScript
Raw Normal View History

import { CaseTypes } from "../../data/CaseTypes";
import { Case } from "../../data/entities/Case";
2020-07-22 22:08:49 +03:00
import { GuildArchives } from "../../data/GuildArchives";
import { GuildCases } from "../../data/GuildCases";
import { GuildLogs } from "../../data/GuildLogs";
import { mapToPublicFn } from "../../pluginUtils";
import { trimPluginDescription } from "../../utils";
import { TimeAndDatePlugin } from "../TimeAndDate/TimeAndDatePlugin";
import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
import { createCase } from "./functions/createCase";
2020-07-22 22:08:49 +03:00
import { createCaseNote } from "./functions/createCaseNote";
import { getCaseEmbed } from "./functions/getCaseEmbed";
import { getCaseSummary } from "./functions/getCaseSummary";
import { getCaseTypeAmountForUserId } from "./functions/getCaseTypeAmountForUserId";
2020-12-15 15:18:08 +02:00
import { getRecentCasesByMod } from "./functions/getRecentCasesByMod";
import { getTotalCasesByMod } from "./functions/getTotalCasesByMod";
import { postCaseToCaseLogChannel } from "./functions/postToCaseLogChannel";
import { CaseArgs, CaseNoteArgs, CasesPluginType, ConfigSchema } from "./types";
import { InternalPosterPlugin } from "../InternalPoster/InternalPosterPlugin";
2020-07-22 22:08:49 +03:00
const defaultOptions = {
config: {
log_automatic_actions: true,
case_log_channel: null,
show_relative_times: true,
relative_time_cutoff: "7d",
case_colors: null,
case_icons: null,
2020-07-22 22:08:49 +03:00
},
};
export const CasesPlugin = zeppelinGuildPlugin<CasesPluginType>()({
name: "cases",
2020-07-30 13:08:06 +03:00
showInDocs: true,
info: {
prettyName: "Cases",
description: trimPluginDescription(`
This plugin contains basic configuration for cases created by other plugins
`),
},
2021-08-18 20:01:06 +03:00
dependencies: async () => [
TimeAndDatePlugin,
InternalPosterPlugin,
2021-08-18 20:01:06 +03:00
// The `as any` cast here is to prevent TypeScript from locking up from the circular dependency
((await import("../Logs/LogsPlugin")) as any).LogsPlugin,
],
2020-07-22 22:08:49 +03:00
configSchema: ConfigSchema,
defaultOptions,
public: {
createCase(pluginData) {
2020-07-23 00:37:33 +03:00
return (args: CaseArgs) => {
2020-07-22 22:08:49 +03:00
return createCase(pluginData, args);
};
},
createCaseNote(pluginData) {
2020-07-23 00:37:33 +03:00
return (args: CaseNoteArgs) => {
2020-07-22 22:08:49 +03:00
return createCaseNote(pluginData, args);
};
},
postCaseToCaseLogChannel(pluginData) {
2020-07-23 00:37:33 +03:00
return (caseOrCaseId: Case | number) => {
2020-07-22 22:08:49 +03:00
return postCaseToCaseLogChannel(pluginData, caseOrCaseId);
};
},
2020-07-23 00:37:33 +03:00
getCaseTypeAmountForUserId(pluginData) {
return (userID: string, type: CaseTypes) => {
return getCaseTypeAmountForUserId(pluginData, userID, type);
};
},
2020-12-15 15:18:08 +02:00
getTotalCasesByMod: mapToPublicFn(getTotalCasesByMod),
getRecentCasesByMod: mapToPublicFn(getRecentCasesByMod),
getCaseEmbed: mapToPublicFn(getCaseEmbed),
getCaseSummary: mapToPublicFn(getCaseSummary),
2020-07-22 22:08:49 +03:00
},
afterLoad(pluginData) {
2020-07-22 22:08:49 +03:00
pluginData.state.logs = new GuildLogs(pluginData.guild.id);
pluginData.state.archives = GuildArchives.getGuildInstance(pluginData.guild.id);
pluginData.state.cases = GuildCases.getGuildInstance(pluginData.guild.id);
},
});