feat: add internal role manager plugin; add role buttons plugin
This commit is contained in:
parent
9314d57645
commit
3fe71b3e27
23 changed files with 732 additions and 1 deletions
39
backend/src/plugins/RoleManager/RoleManagerPlugin.ts
Normal file
39
backend/src/plugins/RoleManager/RoleManagerPlugin.ts
Normal file
|
@ -0,0 +1,39 @@
|
|||
import { zeppelinGuildPlugin } from "../ZeppelinPluginBlueprint";
|
||||
import { ConfigSchema, RoleManagerPluginType } from "./types";
|
||||
import { GuildRoleQueue } from "../../data/GuildRoleQueue";
|
||||
import { mapToPublicFn } from "../../pluginUtils";
|
||||
import { addRole } from "./functions/addRole";
|
||||
import { removeRole } from "./functions/removeRole";
|
||||
import { addPriorityRole } from "./functions/addPriorityRole";
|
||||
import { removePriorityRole } from "./functions/removePriorityRole";
|
||||
import { runRoleAssignmentLoop } from "./functions/runRoleAssignmentLoop";
|
||||
import { LogsPlugin } from "../Logs/LogsPlugin";
|
||||
|
||||
export const RoleManagerPlugin = zeppelinGuildPlugin<RoleManagerPluginType>()({
|
||||
name: "role_manager",
|
||||
configSchema: ConfigSchema,
|
||||
showInDocs: false,
|
||||
|
||||
dependencies: () => [LogsPlugin],
|
||||
|
||||
public: {
|
||||
addRole: mapToPublicFn(addRole),
|
||||
removeRole: mapToPublicFn(removeRole),
|
||||
addPriorityRole: mapToPublicFn(addPriorityRole),
|
||||
removePriorityRole: mapToPublicFn(removePriorityRole),
|
||||
},
|
||||
|
||||
beforeLoad(pluginData) {
|
||||
pluginData.state.roleQueue = GuildRoleQueue.getGuildInstance(pluginData.guild.id);
|
||||
pluginData.state.pendingRoleAssignmentPromise = Promise.resolve();
|
||||
},
|
||||
|
||||
afterLoad(pluginData) {
|
||||
runRoleAssignmentLoop(pluginData);
|
||||
},
|
||||
|
||||
async afterUnload(pluginData) {
|
||||
pluginData.state.abortRoleAssignmentLoop = true;
|
||||
await pluginData.state.pendingRoleAssignmentPromise;
|
||||
},
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue