From 85b900258caf1f7f4386c296f225cee2ea6b712f Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Tue, 7 Jul 2026 07:31:06 +0000 Subject: [PATCH] implement draft/whoami --- gencapdefs.py | 6 ++++++ irc/caps/defs.go | 7 ++++++- irc/server.go | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gencapdefs.py b/gencapdefs.py index 0238ad45..08121cca 100644 --- a/gencapdefs.py +++ b/gencapdefs.py @@ -255,6 +255,12 @@ CAPDEFS = [ url="https://github.com/ircv3/ircv3-specifications/pull/613", standard="draft IRCv3", ), + CapDef( + identifier="Whoami", + name="draft/whoami", + url="https://github.com/ircv3/ircv3-specifications/pull/603", + standard="proposed IRCv3", + ), ] def validate_defs(): diff --git a/irc/caps/defs.go b/irc/caps/defs.go index 8595d0dc..0a374b1a 100644 --- a/irc/caps/defs.go +++ b/irc/caps/defs.go @@ -7,7 +7,7 @@ package caps const ( // number of recognized capabilities: - numCapabs = 40 + numCapabs = 41 // length of the uint32 array that represents the bitset: bitsetLen = 2 ) @@ -101,6 +101,10 @@ const ( // https://github.com/ircv3/ircv3-specifications/pull/471 WebPush Capability = iota + // Whoami is the proposed IRCv3 capability named "draft/whoami": + // https://github.com/ircv3/ircv3-specifications/pull/603 + Whoami Capability = iota + // EchoMessage is the IRCv3 capability named "echo-message": // https://ircv3.net/specs/extensions/echo-message-3.2.html EchoMessage Capability = iota @@ -199,6 +203,7 @@ var ( "draft/read-marker", "draft/relaymsg", "draft/webpush", + "draft/whoami", "echo-message", "ergo.chat/nope", "extended-join", diff --git a/irc/server.go b/irc/server.go index 21edbf5e..19152017 100644 --- a/irc/server.go +++ b/irc/server.go @@ -524,6 +524,9 @@ func (server *Server) playRegistrationBurst(session *Session) { if !(rb.session.capabilities.Has(caps.ExtendedISupport) && rb.session.isupportSentPrereg) { server.RplISupport(c, rb) } + if session.capabilities.Has(caps.Whoami) { + rb.Add(nil, d.nickMask, "SETNAME", d.realname) + } if session.capabilities.Has(caps.Metadata) { playMetadataVerbBatch(rb, d.nick, c.ListMetadata()) }