3
0
Fork 0
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:
Dragory 2020-09-30 01:08:42 +03:00
parent baf13a9ffa
commit 5d579446c5
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
2 changed files with 7 additions and 0 deletions

View file

@ -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();
}), }),
); );
}, },

View file

@ -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"]),