3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-06-15 10:45:01 +00:00
zeppelin/backend/src/plugins/Automod/events/RunAutomodOnMemberUpdate.ts
Dragory 504ffd729d
Some checks failed
Code quality checks / build (18.16) (push) Failing after 4s
chore: lodash -> lodash-es
2025-01-01 15:41:17 +00:00

36 lines
1.1 KiB
TypeScript

import { guildPluginEventListener } from "knub";
import { difference, isEqual } from "lodash-es";
import { runAutomod } from "../functions/runAutomod.js";
import { AutomodContext, AutomodPluginType } from "../types.js";
export const RunAutomodOnMemberUpdate = guildPluginEventListener<AutomodPluginType>()({
event: "guildMemberUpdate",
listener({ pluginData, args: { oldMember, newMember } }) {
if (!oldMember) return;
if (oldMember.partial) return;
const oldRoles = [...oldMember.roles.cache.keys()];
const newRoles = [...newMember.roles.cache.keys()];
if (isEqual(oldRoles, newRoles)) return;
const addedRoles = difference(newRoles, oldRoles);
const removedRoles = difference(oldRoles, newRoles);
if (addedRoles.length || removedRoles.length) {
const context: AutomodContext = {
timestamp: Date.now(),
user: newMember.user,
member: newMember,
rolesChanged: {
added: addedRoles,
removed: removedRoles,
},
};
pluginData.state.queue.add(() => {
runAutomod(pluginData, context);
});
}
},
});