feat: timeout support

This commit is contained in:
Dragory 2023-04-01 18:33:09 +03:00 committed by Miikka
parent 06877e90cc
commit 39e0dfa27f
23 changed files with 532 additions and 92 deletions

View file

@ -1,4 +1,5 @@
import { Snowflake } from "discord.js";
import { MuteTypes } from "../../../data/MuteTypes";
import { memberRolesLock } from "../../../utils/lockNameHelpers";
import { LogsPlugin } from "../../Logs/LogsPlugin";
import { mutesEvt } from "../types";
@ -10,18 +11,25 @@ export const ReapplyActiveMuteOnJoinEvt = mutesEvt({
event: "guildMemberAdd",
async listener({ pluginData, args: { member } }) {
const mute = await pluginData.state.mutes.findExistingMuteForUserId(member.id);
if (mute) {
if (!mute) {
return;
}
if (mute.type === MuteTypes.Role) {
const muteRole = pluginData.config.get().mute_role;
if (muteRole) {
const memberRoleLock = await pluginData.locks.acquire(memberRolesLock(member));
await member.roles.add(muteRole as Snowflake);
memberRoleLock.unlock();
try {
await member.roles.add(muteRole as Snowflake);
} finally {
memberRoleLock.unlock();
}
}
pluginData.getPlugin(LogsPlugin).logMemberMuteRejoin({
member,
});
}
pluginData.getPlugin(LogsPlugin).logMemberMuteRejoin({
member,
});
},
});