chghost
Extension
Copyright © 2013 Christine Dodrill <me@christine.website>
Copyright © 2016 Ryan <ryan@hashbang.sh>
Copyright © 2020 James Wheare <james@irccloud.com>
Unlimited redistribution and modification of this document is allowed provided that the above copyright notice and this permission notice remains intact.
The chghost
capability allows servers to send a notification when clients change their username or host. This mechanism avoids simulating a reconnect of the client. This is useful for servers that implement virtual hosts or cloaks, and helps to reduce clutter in client UI.
chghost
capability π
When a client username or host is changed, servers MUST send the CHGHOST
message to other clients who share channels with the target client and who have enabled the chghost
capability. Servers SHOULD also send the CHGHOST
message to the client whose own username or host changed, if that client also supports the chghost
capability.
CHGHOST
message π
The CHGHOST
message is as follows:
:nick!old_user@old_host.local CHGHOST new_user new_host.local
The new_user
parameter represents the userβs username.
The new_host.local
parameter represents the userβs hostname.
One or both of the username and hostname can change during the CHGHOST process.
Servers that implement ident checking might choose to prefix a username with a tilde ~
character to indicate missing confirmation from an ident server. This MUST be considered part of the username and included in any CHGHOST messages where relevant.
:nick!~old_user@old_host.local CHGHOST ~new_user new_host.local
chghost
capability has not been negotiated π
When the capability is not enabled for other clients who share channels with the changed client, servers SHOULD send fallback messages to simulate the client reconnecting. This allows clients to keep their user state up to date. For shared channels, the simulated events SHOULD include appropriate QUIT
, JOIN
and MODE
commands, to restore membership and user channel modes.
:nick!old_user@old_host.local QUIT :Changing hostname
:nick!new_user@new_host.local JOIN #ircv3
:ircd.local MODE #ircv3 +v :nick
In this example, tim!~toolshed@backyard
gets their username changed to ~b
and their hostname changed to ckyard
. Their new user mask is tim!~b@ckyard
:
:tim!~toolshed@backyard CHGHOST ~b ckyard
In this example, tim!b@ckyard
gets their username changed to toolshed
and their hostname changed to backyard
. Their new user mask is tim!toolshed@backyard
:
:tim!b@ckyard CHGHOST toolshed backyard
~
prefix should be included on CHGHOST messages. The new examples make clear that it should be included.Software supporting chghost: Ergo, ircd-hybrid, InspIRCd, Solanum, txircd, UnrealIRCd, AdiIRC, Ambassador, catgirl, Colloquy, glirc, Halloy, HexChat, IceChat, Irssi, Konversation, KVIrc, mIRC, Quassel, Swirc, Textual, WeeChat, gamja, IRCCloud, Kiwi IRC, The Lounge, PIRC.pl web client, Colloquy, CoreIRC, Palaver, Quasseldroid, pounce (as Server), pounce (as Client), soju (as Server), soju (as Client), ZNC (as Server), ZNC (as Client), BitBot, Eggdrop, Limnoria, Moon Moon, Sopel (ex Willie), ChatSharp, Communi, girc, irc-framework, ircrobots, Kitteh IRC Client Library, pydle, Rust irc, Warren, Heisenbridge (bouncer mode), PyLink (clientbot mode)