3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-10 12:25:02 +00:00

automod: add role_added and role_removed triggers

This commit is contained in:
Dragory 2020-08-10 02:22:39 +03:00
parent bfa9cf55a7
commit 4c7a51f586
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
9 changed files with 187 additions and 4 deletions

View file

@ -0,0 +1,42 @@
import * as t from "io-ts";
import { automodTrigger } from "../helpers";
import { consumeIgnoredRoleChange } from "../functions/ignoredRoleChanges";
interface RoleAddedMatchResult {
matchedRoleId: string;
}
export const RoleAddedTrigger = automodTrigger<RoleAddedMatchResult>()({
configType: t.union([t.string, t.array(t.string)]),
defaultConfig: null,
async match({ triggerConfig, context, pluginData }) {
if (!context.member || !context.rolesChanged || context.rolesChanged.added.length === 0) {
return;
}
const triggerRoles = Array.isArray(triggerConfig) ? triggerConfig : [triggerConfig];
for (const roleId of triggerRoles) {
if (context.rolesChanged.added.includes(roleId)) {
if (consumeIgnoredRoleChange(pluginData, context.member.id, roleId)) {
continue;
}
return {
extra: {
matchedRoleId: roleId,
},
};
}
}
},
renderMatchInformation({ matchResult, pluginData, contexts }) {
const role = pluginData.guild.roles.get(matchResult.extra.matchedRoleId);
const roleName = role?.name || "Unknown";
const member = contexts[0].member!;
const memberName = `**${member.user.username}#${member.user.discriminator}** (\`${member.id}\`)`;
return `Role ${roleName} (\`${matchResult.extra.matchedRoleId}\`) was added to ${memberName}`;
},
});