3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-15 05:41:51 +00:00

Add missing role locks for unmutes

This commit is contained in:
Dragory 2021-04-29 01:41:02 +03:00
parent 0a8239996a
commit 74cc58aeaa
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
2 changed files with 16 additions and 2 deletions

View file

@ -3,6 +3,7 @@ import { MutesPluginType } from "../types";
import { LogType } from "../../../data/LogType";
import { resolveMember, stripObjectToScalars, UnknownUser } from "../../../utils";
import { MemberOptions } from "eris";
import { memberRolesLock } from "../../../utils/lockNameHelpers";
export async function clearExpiredMutes(pluginData: GuildPluginData<MutesPluginType>) {
const expiredMutes = await pluginData.state.mutes.getExpiredMutes();
@ -11,9 +12,12 @@ export async function clearExpiredMutes(pluginData: GuildPluginData<MutesPluginT
if (member) {
try {
const lock = await pluginData.locks.acquire(memberRolesLock(member));
const muteRole = pluginData.config.get().mute_role;
if (muteRole) {
await member.removeRole(muteRole);
member.roles = member.roles.filter(r => r !== muteRole);
}
if (mute.roles_to_restore) {
const memberOptions: MemberOptions = {};
@ -21,8 +25,11 @@ export async function clearExpiredMutes(pluginData: GuildPluginData<MutesPluginT
memberOptions.roles = Array.from(
new Set([...mute.roles_to_restore, ...member.roles.filter(x => x !== muteRole && guildRoles.has(x))]),
);
member.edit(memberOptions);
await member.edit(memberOptions);
member.roles = memberOptions.roles;
}
lock.unlock();
} catch (e) {
pluginData.state.serverLogs.log(LogType.BOT_ALERT, {
body: `Failed to remove mute role from {userMention(member)}`,

View file

@ -8,6 +8,7 @@ import { CasesPlugin } from "../../Cases/CasesPlugin";
import { CaseTypes } from "../../../data/CaseTypes";
import { LogType } from "../../../data/LogType";
import { MemberOptions } from "eris";
import { memberRolesLock } from "../../../utils/lockNameHelpers";
export async function unmuteUser(
pluginData: GuildPluginData<MutesPluginType>,
@ -32,9 +33,12 @@ export async function unmuteUser(
} else {
// Unmute immediately
if (member) {
const lock = await pluginData.locks.acquire(memberRolesLock(member));
const muteRole = pluginData.config.get().mute_role;
if (muteRole && member.roles.includes(muteRole)) {
await member.removeRole(muteRole);
member.roles = member.roles.filter(r => r !== muteRole);
}
if (existingMute?.roles_to_restore) {
const memberOptions: MemberOptions = {};
@ -42,8 +46,11 @@ export async function unmuteUser(
memberOptions.roles = Array.from(
new Set([...existingMute.roles_to_restore, ...member.roles.filter(x => x !== muteRole && guildRoles.has(x))]),
);
member.edit(memberOptions);
await member.edit(memberOptions);
member.roles = memberOptions.roles;
}
lock.unlock();
} else {
// tslint:disable-next-line:no-console
console.warn(