echo-message
Extension
Copyright © 2014 Attila Molnar <attilamolnar@hush.com>
Copyright © 2014 J-P Nurmi <jpnurmi@gmail.com>
Unlimited redistribution and modification of this document is allowed provided that the above copyright notice and this permission notice remains intact.
This client capability MUST be named echo-message
.
If enabled, servers MUST send PRIVMSG
and NOTICE
messages back to
the client that sent them. If servers apply any modifications to these
messages, they MUST send the final version of the message back to the
originating client.
For clients, receiving a message with themselves as the sender acts as
an acknowledgement that the message has been delivered to the server.
Clients that receive self-sent PRIVMSG
and NOTICE
messages, MUST
treat them the same way as if the client itself would have sent the
message to the target. Clients may choose to disable local echoing
of sent PRIVMSG
and NOTICE
messages altogether, or present them
in pending state.
When the message-tags
capability
has been enabled, the same rules apply to TAGMSG
messages.
The capability is useful for clients to get an acknowledgement that a message was delivered. It can be also used for measuring lag between client and server, that is, the time it takes from sending a message to receiving it back.
Furthermore, the capability is useful for users that have multiple clients attached to a bouncer. In this scenario, when users send messages from one client, the messages get automatically relayed to other attached clients. This allows all attached clients to display full conversation.
Servers MAY send a faked message back to the client instead, in cases where the final version is silently blocked, for example when filtering spam.
To prevent perceived input lag, clients may choose not to wait for an acknowledgment from the server before displaying sent messages to users. Clients may instead choose to display a temporary local message that is replaced once the echo-message
acknowledgment is received. However, correlating these is not straightforward, as the server may modify them before acknowledgment. There are also additional complications for self-targeted private messages.
The labeled-response
specification addresses this limitation.
In the following examples, example!ex@example.com
presents a client
that has enabled the echo-message
capability.
--> PRIVMSG Attila :hi
:example!ex@example.com PRIVMSG Attila :hi
The client interprets the received message as if it had sent a PRIVMSG
with contents “hi” to Attila
.
Another example where a server modifies a message by filtering out text formatting and sends the final version back:
--> PRIVMSG #ircv3 :back from \02lunch\0F
:example!ex@example.com PRIVMSG #ircv3 :back from lunch
Previous versions of this specification didn’t include the Limitations section.
Previous versions of this specification didn’t allow for faked messages when filtering spam.
Software supporting echo-message: Ergo, IRCCloud Teams, InspIRCd, Solanum, txircd, UnrealIRCd, AdiIRC, Ambassador, Colloquy, Halloy, IceChat, mIRC, Mozilla Thunderbird, Quassel, senpai, Textual, WeeChat, gamja, IRCCloud, Kiwi IRC, The Lounge, PIRC.pl web client, Colloquy, CoreIRC, Palaver, Quasseldroid, Goguma, IRCCloud (as Server), KiwiBNC (as Server), KiwiBNC (as Client), pounce (as Server), pounce (as Client), soju (as Server), soju (as Client), ZNC (as Server), BitBot, Eggdrop, Limnoria, Moon Moon, Sopel (ex Willie), Communi, girc, irc-framework, Kitteh IRC Client Library, pydle, Rust irc, Matrix2051