mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-03-16 14:11:50 +00:00
Add missing role locks for unmutes
This commit is contained in:
parent
0a8239996a
commit
74cc58aeaa
2 changed files with 16 additions and 2 deletions
|
@ -3,6 +3,7 @@ import { MutesPluginType } from "../types";
|
||||||
import { LogType } from "../../../data/LogType";
|
import { LogType } from "../../../data/LogType";
|
||||||
import { resolveMember, stripObjectToScalars, UnknownUser } from "../../../utils";
|
import { resolveMember, stripObjectToScalars, UnknownUser } from "../../../utils";
|
||||||
import { MemberOptions } from "eris";
|
import { MemberOptions } from "eris";
|
||||||
|
import { memberRolesLock } from "../../../utils/lockNameHelpers";
|
||||||
|
|
||||||
export async function clearExpiredMutes(pluginData: GuildPluginData<MutesPluginType>) {
|
export async function clearExpiredMutes(pluginData: GuildPluginData<MutesPluginType>) {
|
||||||
const expiredMutes = await pluginData.state.mutes.getExpiredMutes();
|
const expiredMutes = await pluginData.state.mutes.getExpiredMutes();
|
||||||
|
@ -11,9 +12,12 @@ export async function clearExpiredMutes(pluginData: GuildPluginData<MutesPluginT
|
||||||
|
|
||||||
if (member) {
|
if (member) {
|
||||||
try {
|
try {
|
||||||
|
const lock = await pluginData.locks.acquire(memberRolesLock(member));
|
||||||
|
|
||||||
const muteRole = pluginData.config.get().mute_role;
|
const muteRole = pluginData.config.get().mute_role;
|
||||||
if (muteRole) {
|
if (muteRole) {
|
||||||
await member.removeRole(muteRole);
|
await member.removeRole(muteRole);
|
||||||
|
member.roles = member.roles.filter(r => r !== muteRole);
|
||||||
}
|
}
|
||||||
if (mute.roles_to_restore) {
|
if (mute.roles_to_restore) {
|
||||||
const memberOptions: MemberOptions = {};
|
const memberOptions: MemberOptions = {};
|
||||||
|
@ -21,8 +25,11 @@ export async function clearExpiredMutes(pluginData: GuildPluginData<MutesPluginT
|
||||||
memberOptions.roles = Array.from(
|
memberOptions.roles = Array.from(
|
||||||
new Set([...mute.roles_to_restore, ...member.roles.filter(x => x !== muteRole && guildRoles.has(x))]),
|
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) {
|
} catch (e) {
|
||||||
pluginData.state.serverLogs.log(LogType.BOT_ALERT, {
|
pluginData.state.serverLogs.log(LogType.BOT_ALERT, {
|
||||||
body: `Failed to remove mute role from {userMention(member)}`,
|
body: `Failed to remove mute role from {userMention(member)}`,
|
||||||
|
|
|
@ -8,6 +8,7 @@ import { CasesPlugin } from "../../Cases/CasesPlugin";
|
||||||
import { CaseTypes } from "../../../data/CaseTypes";
|
import { CaseTypes } from "../../../data/CaseTypes";
|
||||||
import { LogType } from "../../../data/LogType";
|
import { LogType } from "../../../data/LogType";
|
||||||
import { MemberOptions } from "eris";
|
import { MemberOptions } from "eris";
|
||||||
|
import { memberRolesLock } from "../../../utils/lockNameHelpers";
|
||||||
|
|
||||||
export async function unmuteUser(
|
export async function unmuteUser(
|
||||||
pluginData: GuildPluginData<MutesPluginType>,
|
pluginData: GuildPluginData<MutesPluginType>,
|
||||||
|
@ -32,9 +33,12 @@ export async function unmuteUser(
|
||||||
} else {
|
} else {
|
||||||
// Unmute immediately
|
// Unmute immediately
|
||||||
if (member) {
|
if (member) {
|
||||||
|
const lock = await pluginData.locks.acquire(memberRolesLock(member));
|
||||||
|
|
||||||
const muteRole = pluginData.config.get().mute_role;
|
const muteRole = pluginData.config.get().mute_role;
|
||||||
if (muteRole && member.roles.includes(muteRole)) {
|
if (muteRole && member.roles.includes(muteRole)) {
|
||||||
await member.removeRole(muteRole);
|
await member.removeRole(muteRole);
|
||||||
|
member.roles = member.roles.filter(r => r !== muteRole);
|
||||||
}
|
}
|
||||||
if (existingMute?.roles_to_restore) {
|
if (existingMute?.roles_to_restore) {
|
||||||
const memberOptions: MemberOptions = {};
|
const memberOptions: MemberOptions = {};
|
||||||
|
@ -42,8 +46,11 @@ export async function unmuteUser(
|
||||||
memberOptions.roles = Array.from(
|
memberOptions.roles = Array.from(
|
||||||
new Set([...existingMute.roles_to_restore, ...member.roles.filter(x => x !== muteRole && guildRoles.has(x))]),
|
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 {
|
} else {
|
||||||
// tslint:disable-next-line:no-console
|
// tslint:disable-next-line:no-console
|
||||||
console.warn(
|
console.warn(
|
||||||
|
|
Loading…
Add table
Reference in a new issue