mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-03-15 05:41:51 +00:00
Fix several role race conditions
This commit is contained in:
parent
baf13a9ffa
commit
5d579446c5
2 changed files with 7 additions and 0 deletions
|
@ -64,11 +64,15 @@ export const AddRolesAction = automodAction({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const memberRolesLock = await pluginData.locks.acquire(`member-roles-${member.id}`);
|
||||||
|
|
||||||
const rolesArr = Array.from(memberRoles.values());
|
const rolesArr = Array.from(memberRoles.values());
|
||||||
await member.edit({
|
await member.edit({
|
||||||
roles: rolesArr,
|
roles: rolesArr,
|
||||||
});
|
});
|
||||||
member.roles = rolesArr; // Make sure we know of the new roles internally as well
|
member.roles = rolesArr; // Make sure we know of the new roles internally as well
|
||||||
|
|
||||||
|
memberRolesLock.unlock();
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
|
@ -12,7 +12,10 @@ export const ReapplyActiveMuteOnJoinEvt = eventListener<MutesPluginType>()(
|
||||||
const mute = await pluginData.state.mutes.findExistingMuteForUserId(member.id);
|
const mute = await pluginData.state.mutes.findExistingMuteForUserId(member.id);
|
||||||
if (mute) {
|
if (mute) {
|
||||||
const muteRole = pluginData.config.get().mute_role;
|
const muteRole = pluginData.config.get().mute_role;
|
||||||
|
|
||||||
|
const memberRolesLock = await pluginData.locks.acquire(`member-roles-${member.id}`);
|
||||||
await member.addRole(muteRole);
|
await member.addRole(muteRole);
|
||||||
|
memberRolesLock.unlock();
|
||||||
|
|
||||||
pluginData.state.serverLogs.log(LogType.MEMBER_MUTE_REJOIN, {
|
pluginData.state.serverLogs.log(LogType.MEMBER_MUTE_REJOIN, {
|
||||||
member: stripObjectToScalars(member, ["user", "roles"]),
|
member: stripObjectToScalars(member, ["user", "roles"]),
|
||||||
|
|
Loading…
Add table
Reference in a new issue