diff options
| author | Adam <Adam@anope.org> | 2017-03-19 18:36:03 -0400 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2017-03-19 18:36:03 -0400 |
| commit | 2a886acbedb6b6386dbff3e591b0d4035d516b2a (patch) | |
| tree | 765218b2fc476e9b1517d7f1e4aa78f57de87752 /modules/chanserv | |
| parent | f237405a52f6b8efb606c5181ffe3bd75a6a6a8a (diff) | |
Get rid of relying on if(this) in WhoSends()
Diffstat (limited to 'modules/chanserv')
| -rw-r--r-- | modules/chanserv/main/channel.cpp | 9 | ||||
| -rw-r--r-- | modules/chanserv/main/channel.h | 1 | ||||
| -rw-r--r-- | modules/chanserv/main/chanserv.cpp | 19 | ||||
| -rw-r--r-- | modules/chanserv/topic.cpp | 4 |
4 files changed, 25 insertions, 8 deletions
diff --git a/modules/chanserv/main/channel.cpp b/modules/chanserv/main/channel.cpp index d10abbc0d..25430656e 100644 --- a/modules/chanserv/main/channel.cpp +++ b/modules/chanserv/main/channel.cpp @@ -347,6 +347,15 @@ void ChannelImpl::SetPrivate(bool _private) Set(&ChannelType::_private, _private); } +ServiceBot *ChannelImpl::WhoSends() +{ + BotInfo *bi = GetBI(); + if (bi != nullptr) + return bi->bot; + + return Config->GetClient("ChanServ"); +} + ChanServ::ChanAccess *ChannelImpl::GetAccess(unsigned index) { std::vector<ChanServ::ChanAccess *> a = GetRefs<ChanServ::ChanAccess *>(); diff --git a/modules/chanserv/main/channel.h b/modules/chanserv/main/channel.h index bb79df3c5..1cc6dc408 100644 --- a/modules/chanserv/main/channel.h +++ b/modules/chanserv/main/channel.h @@ -141,6 +141,7 @@ class ChannelImpl : public ChanServ::Channel void SetPrivate(bool) override; bool IsFounder(const User *user) override; + ServiceBot *WhoSends() override; ChanServ::ChanAccess *GetAccess(unsigned index) override; ChanServ::AccessGroup AccessFor(const User *u, bool = true) override; ChanServ::AccessGroup AccessFor(NickServ::Account *nc, bool = true) override; diff --git a/modules/chanserv/main/chanserv.cpp b/modules/chanserv/main/chanserv.cpp index dd6bdb472..be29c0ab8 100644 --- a/modules/chanserv/main/chanserv.cpp +++ b/modules/chanserv/main/chanserv.cpp @@ -380,17 +380,17 @@ class ChanServCore : public Module return; if (c->ci) - c->SetMode(c->ci->WhoSends(), "REGISTERED", "", false); + c->SetMode(nullptr, "REGISTERED", "", false); else - c->RemoveMode(c->ci->WhoSends(), "REGISTERED", "", false); + c->RemoveMode(nullptr, "REGISTERED", "", false); const Anope::string &require = Config->GetModule(this)->Get<Anope::string>("require"); if (!require.empty()) { if (c->ci) - c->SetModes(c->ci->WhoSends(), false, "+%s", require.c_str()); + c->SetModes(nullptr, false, "+%s", require.c_str()); else - c->SetModes(c->ci->WhoSends(), false, "-%s", require.c_str()); + c->SetModes(nullptr, false, "-%s", require.c_str()); } } @@ -485,8 +485,13 @@ class ChanServCore : public Module else { if (!ci->GetBot()) - ci->WhoSends()->Assign(NULL, ci); - if (ci->c->FindUser(ci->GetBot()) == NULL) + { + ServiceBot *bi = ci->WhoSends(); + if (bi != nullptr) + bi->Assign(nullptr, ci); + } + + if (ci->GetBot() != nullptr && ci->c->FindUser(ci->GetBot()) == nullptr) { Anope::string botmodes = Config->GetModule("botserv/main")->Get<Anope::string>("botmodes", Config->GetModule("chanserv/main")->Get<Anope::string>("botmodes")); @@ -535,7 +540,7 @@ class ChanServCore : public Module if (cu && cm && !cu->status.HasMode(cm->mchar)) { /* Our -o and their mode change crossing, bounce their mode */ - c->RemoveMode(c->ci->WhoSends(), mode, param); + c->RemoveMode(nullptr, mode, param); /* We don't set mlocks until after the join has finished processing, it will stack with this change, * so there isn't much for the user to remove except -nt etc which is likely locked anyway. */ diff --git a/modules/chanserv/topic.cpp b/modules/chanserv/topic.cpp index d3546562e..005bcaf22 100644 --- a/modules/chanserv/topic.cpp +++ b/modules/chanserv/topic.cpp @@ -261,7 +261,9 @@ class CSTopic : public Module /* Update channel topic */ if ((c->ci->IsTopicLock() || c->ci->IsKeepTopic()) && c->ci->GetLastTopic() != c->topic) { - c->ChangeTopic(!c->ci->GetLastTopicSetter().empty() ? c->ci->GetLastTopicSetter() : c->ci->WhoSends()->nick, c->ci->GetLastTopic(), c->ci->GetLastTopicTime() ? c->ci->GetLastTopicTime() : Anope::CurTime); + ServiceBot *sender = c->ci->WhoSends(); + c->ChangeTopic(!c->ci->GetLastTopicSetter().empty() ? c->ci->GetLastTopicSetter() : (sender ? sender->nick : Me->GetName()), + c->ci->GetLastTopic(), c->ci->GetLastTopicTime() ? c->ci->GetLastTopicTime() : Anope::CurTime); } } } |
