Skip to content

Commit 92ff4fb

Browse files
committed
fix: preserve moderator role fallback in isModerator
1 parent 33591fd commit 92ff4fb

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

src/utils/permissions.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,9 @@ export function isModerator(member, config) {
140140

141141
// Check bot admin role from config
142142
if (config.permissions?.adminRoleId) {
143-
return member.roles.cache.has(config.permissions.adminRoleId);
143+
if (member.roles.cache.has(config.permissions.adminRoleId)) {
144+
return true;
145+
}
144146
}
145147

146148
if (config.permissions?.moderatorRoleId) {

tests/utils/permissions.test.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,23 @@ describe('isModerator', () => {
401401
expect(member.roles.cache.has).toHaveBeenCalledWith('654321');
402402
});
403403

404+
it('should return true for moderator role when admin and moderator roles are both configured', () => {
405+
const member = {
406+
permissions: { has: vi.fn().mockReturnValue(false) },
407+
roles: {
408+
cache: {
409+
has: vi.fn().mockImplementation((roleId) => roleId === '654321'),
410+
},
411+
},
412+
};
413+
const config = {
414+
permissions: { adminRoleId: '123456', moderatorRoleId: '654321' },
415+
};
416+
expect(isModerator(member, config)).toBe(true);
417+
expect(member.roles.cache.has).toHaveBeenCalledWith('123456');
418+
expect(member.roles.cache.has).toHaveBeenCalledWith('654321');
419+
});
420+
404421
it('should return false for regular members', () => {
405422
const member = {
406423
permissions: { has: vi.fn().mockReturnValue(false) },

0 commit comments

Comments
 (0)