mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-03-16 14:11:50 +00:00
Add member_leave automod trigger
At least i think so - cant test it until knub changes are done
This commit is contained in:
parent
2700f4e389
commit
f9dd82f201
6 changed files with 49 additions and 2 deletions
|
@ -20,7 +20,7 @@ import { AntiraidClearCmd } from "./commands/AntiraidClearCmd";
|
||||||
import { SetAntiraidCmd } from "./commands/SetAntiraidCmd";
|
import { SetAntiraidCmd } from "./commands/SetAntiraidCmd";
|
||||||
import { ViewAntiraidCmd } from "./commands/ViewAntiraidCmd";
|
import { ViewAntiraidCmd } from "./commands/ViewAntiraidCmd";
|
||||||
import { runAutomodOnCounterTrigger } from "./events/runAutomodOnCounterTrigger";
|
import { runAutomodOnCounterTrigger } from "./events/runAutomodOnCounterTrigger";
|
||||||
import { RunAutomodOnJoinEvt } from "./events/RunAutomodOnJoinEvt";
|
import { RunAutomodOnJoinEvt, RunAutomodOnLeaveEvt } from "./events/RunAutomodOnJoinLeaveEvt";
|
||||||
import { RunAutomodOnMemberUpdate } from "./events/RunAutomodOnMemberUpdate";
|
import { RunAutomodOnMemberUpdate } from "./events/RunAutomodOnMemberUpdate";
|
||||||
import { runAutomodOnMessage } from "./events/runAutomodOnMessage";
|
import { runAutomodOnMessage } from "./events/runAutomodOnMessage";
|
||||||
import { runAutomodOnModAction } from "./events/runAutomodOnModAction";
|
import { runAutomodOnModAction } from "./events/runAutomodOnModAction";
|
||||||
|
@ -176,6 +176,7 @@ export const AutomodPlugin = zeppelinGuildPlugin<AutomodPluginType>()({
|
||||||
events: [
|
events: [
|
||||||
RunAutomodOnJoinEvt,
|
RunAutomodOnJoinEvt,
|
||||||
RunAutomodOnMemberUpdate,
|
RunAutomodOnMemberUpdate,
|
||||||
|
RunAutomodOnLeaveEvt,
|
||||||
// Messages use message events from SavedMessages, see onLoad below
|
// Messages use message events from SavedMessages, see onLoad below
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
|
@ -15,4 +15,5 @@ export enum RecentActionType {
|
||||||
VoiceChannelMove,
|
VoiceChannelMove,
|
||||||
MemberJoin,
|
MemberJoin,
|
||||||
Sticker,
|
Sticker,
|
||||||
|
MemberLeave,
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,3 +25,25 @@ export const RunAutomodOnJoinEvt = typedGuildEventListener<AutomodPluginType>()(
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const RunAutomodOnLeaveEvt = typedGuildEventListener<AutomodPluginType>()({
|
||||||
|
event: "guildMemberRemove",
|
||||||
|
listener({ pluginData, args: { member } }) {
|
||||||
|
const context: AutomodContext = {
|
||||||
|
timestamp: Date.now(),
|
||||||
|
partialMember: member,
|
||||||
|
joined: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
pluginData.state.queue.add(() => {
|
||||||
|
pluginData.state.recentActions.push({
|
||||||
|
type: RecentActionType.MemberLeave,
|
||||||
|
context,
|
||||||
|
count: 1,
|
||||||
|
identifier: null,
|
||||||
|
});
|
||||||
|
|
||||||
|
runAutomod(pluginData, context);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
|
@ -17,6 +17,7 @@ import { MatchRegexTrigger } from "./matchRegex";
|
||||||
import { MatchWordsTrigger } from "./matchWords";
|
import { MatchWordsTrigger } from "./matchWords";
|
||||||
import { MemberJoinTrigger } from "./memberJoin";
|
import { MemberJoinTrigger } from "./memberJoin";
|
||||||
import { MemberJoinSpamTrigger } from "./memberJoinSpam";
|
import { MemberJoinSpamTrigger } from "./memberJoinSpam";
|
||||||
|
import { MemberLeaveTrigger } from "./memberLeave";
|
||||||
import { MentionSpamTrigger } from "./mentionSpam";
|
import { MentionSpamTrigger } from "./mentionSpam";
|
||||||
import { MessageSpamTrigger } from "./messageSpam";
|
import { MessageSpamTrigger } from "./messageSpam";
|
||||||
import { MuteTrigger } from "./mute";
|
import { MuteTrigger } from "./mute";
|
||||||
|
@ -72,6 +73,7 @@ export const AvailableTriggers = t.type({
|
||||||
match_links: MatchLinksTrigger.configType,
|
match_links: MatchLinksTrigger.configType,
|
||||||
match_attachment_type: MatchAttachmentTypeTrigger.configType,
|
match_attachment_type: MatchAttachmentTypeTrigger.configType,
|
||||||
member_join: MemberJoinTrigger.configType,
|
member_join: MemberJoinTrigger.configType,
|
||||||
|
member_leave: MemberLeaveTrigger.configType,
|
||||||
role_added: RoleAddedTrigger.configType,
|
role_added: RoleAddedTrigger.configType,
|
||||||
role_removed: RoleRemovedTrigger.configType,
|
role_removed: RoleRemovedTrigger.configType,
|
||||||
|
|
||||||
|
|
20
backend/src/plugins/Automod/triggers/memberLeave.ts
Normal file
20
backend/src/plugins/Automod/triggers/memberLeave.ts
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import * as t from "io-ts";
|
||||||
|
import { automodTrigger } from "../helpers";
|
||||||
|
|
||||||
|
export const MemberLeaveTrigger = automodTrigger<unknown>()({
|
||||||
|
configType: t.type({}),
|
||||||
|
|
||||||
|
defaultConfig: {},
|
||||||
|
|
||||||
|
async match({ pluginData, context, triggerConfig }) {
|
||||||
|
if (!context.joined || !context.member) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
|
||||||
|
renderMatchInformation({ pluginData, contexts, triggerConfig }) {
|
||||||
|
return "";
|
||||||
|
},
|
||||||
|
});
|
|
@ -1,4 +1,4 @@
|
||||||
import { GuildMember, User } from "discord.js";
|
import { GuildMember, PartialGuildMember, User } from "discord.js";
|
||||||
import * as t from "io-ts";
|
import * as t from "io-ts";
|
||||||
import { BasePluginType, CooldownManager } from "knub";
|
import { BasePluginType, CooldownManager } from "knub";
|
||||||
import { SavedMessage } from "../../data/entities/SavedMessage";
|
import { SavedMessage } from "../../data/entities/SavedMessage";
|
||||||
|
@ -115,6 +115,7 @@ export interface AutomodContext {
|
||||||
user?: User;
|
user?: User;
|
||||||
message?: SavedMessage;
|
message?: SavedMessage;
|
||||||
member?: GuildMember;
|
member?: GuildMember;
|
||||||
|
partialMember?: GuildMember | PartialGuildMember;
|
||||||
joined?: boolean;
|
joined?: boolean;
|
||||||
rolesChanged?: {
|
rolesChanged?: {
|
||||||
added?: string[];
|
added?: string[];
|
||||||
|
|
Loading…
Add table
Reference in a new issue