diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mode.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/mode.cpp b/src/mode.cpp index 6805c348c..342345869 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -579,12 +579,23 @@ void ModeParser::Process(const char* const* parameters, int pcnt, User *user, bo */ if ((IS_LOCAL(user)) && (modehandlers[handler_id]->NeedsOper()) && (!user->HasModePermission(modehandlers[handler_id]->GetModeChar(), type))) { - user->WriteNumeric(481, "%s :Permission Denied - Oper type %s does not have access to %sset %s mode %c", - user->nick, - user->oper, - adding ? "" : "un", - type == MODETYPE_CHANNEL ? "channel" : "user", - modehandlers[handler_id]->GetModeChar()); + if (IS_OPER(user)) + { + user->WriteNumeric(481, "%s :Permission Denied - Oper type %s does not have access to %sset %s mode %c", + user->nick, + user->oper, + adding ? "" : "un", + type == MODETYPE_CHANNEL ? "channel" : "user", + modehandlers[handler_id]->GetModeChar()); + } + else + { + user->WriteNumeric(481, "%s :Permission Denied - Only operators may %sset %s mode %c", + user->nick, + adding ? "" : "un", + type == MODETYPE_CHANNEL ? "channel" : "user", + modehandlers[handler_id]->GetModeChar()); + } continue; } |