delete bc;
throw ModuleException("Could not add new modes!");
}
- Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash };
- ServerInstance->Modules->Attach(eventlist, this, 3);
+ Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash, I_On005Numeric };
+ ServerInstance->Modules->Attach(eventlist, this, 4);
}
+ virtual void On005Numeric(std::string &output)
+ {
+ ServerInstance->AddExtBanChar('B');
+ }
virtual void OnRehash(User* user, const std::string ¶m)
{
return 0;
}
- if (c->IsModeSet('B'))
+ if (c->IsModeSet('B') || c->IsExtBanned(user, 'B'))
{
int caps = 0;
const char* actstr = "\1ACTION ";
{
Channel* curr = i->first;
- if (curr->IsModeSet('N'))
- {
- if (CHANOPS_EXEMPT(ServerInstance, 'N') && curr->GetStatus(user) == STATUS_OP)
- continue;
-
- user->WriteNumeric(ERR_CANTCHANGENICK, "%s :Can't change nickname while on %s (+N is set)", user->nick.c_str(), curr->name.c_str());
- return 1;
- }
+ if (CHANOPS_EXEMPT(ServerInstance, 'N') && curr->GetStatus(user) == STATUS_OP)
+ continue;
- if (curr->IsExtBanned(user, 'N'))
+ if (curr->IsModeSet('N') || curr->IsExtBanned(user, 'N'))
{
user->WriteNumeric(ERR_CANTCHANGENICK, "%s :Can't change nickname while on %s (+N is set)", user->nick.c_str(), curr->name.c_str());
return 1;