class ModuleIRCv3ChgHost : public Module
{
Cap::Capability cap;
+ ClientProtocol::EventProvider protoevprov;
void DoChgHost(User* user, const std::string& ident, const std::string& host)
{
- std::string line(1, ':');
- line.append(user->GetFullHost()).append(" CHGHOST ").append(ident).append(1, ' ').append(host);
- IRCv3::WriteNeighborsWithCap(user, line, cap);
+ ClientProtocol::Message msg("CHGHOST", user);
+ msg.PushParamRef(ident);
+ msg.PushParamRef(host);
+ ClientProtocol::Event protoev(protoevprov, msg);
+ IRCv3::WriteNeighborsWithCap(user, protoev, cap, true);
}
public:
ModuleIRCv3ChgHost()
: cap(this, "chghost")
+ , protoevprov(this, "CHGHOST")
{
}
void OnChangeIdent(User* user, const std::string& newident) CXX11_OVERRIDE
{
- DoChgHost(user, newident, user->dhost);
+ DoChgHost(user, newident, user->GetDisplayedHost());
}
void OnChangeHost(User* user, const std::string& newhost) CXX11_OVERRIDE
Version GetVersion() CXX11_OVERRIDE
{
- return Version("Provides the chghost IRCv3.2 extension", VF_VENDOR);
+ return Version("Provides the chghost IRCv3 extension", VF_VENDOR);
}
};