ScuttleBot

fix: strip userhost-in-names from NAMES reply parsing IRCv3 userhost-in-names sends nick!~user@host instead of just nick. Strip everything after ! to get the clean nick.

lmata 2026-04-06 00:42 trunk
Commit dddd99f3509daf804d1d1385968f6f2afcf15fccebb53617386f83657b210898
--- internal/bots/bridge/bridge.go
+++ internal/bots/bridge/bridge.go
@@ -271,11 +271,15 @@
271271
nick = name[1:]
272272
} else if strings.HasPrefix(name, "+") {
273273
prefix = "+"
274274
nick = name[1:]
275275
}
276
- if nick != b.nick {
276
+ // Strip !user@host from userhost-in-names (IRCv3).
277
+ if idx := strings.Index(nick, "!"); idx != -1 {
278
+ nick = nick[:idx]
279
+ }
280
+ if nick != "" && nick != b.nick {
277281
b.namesUsers[channel][nick] = prefix
278282
}
279283
}
280284
b.mu.Unlock()
281285
})
282286
--- internal/bots/bridge/bridge.go
+++ internal/bots/bridge/bridge.go
@@ -271,11 +271,15 @@
271 nick = name[1:]
272 } else if strings.HasPrefix(name, "+") {
273 prefix = "+"
274 nick = name[1:]
275 }
276 if nick != b.nick {
 
 
 
 
277 b.namesUsers[channel][nick] = prefix
278 }
279 }
280 b.mu.Unlock()
281 })
282
--- internal/bots/bridge/bridge.go
+++ internal/bots/bridge/bridge.go
@@ -271,11 +271,15 @@
271 nick = name[1:]
272 } else if strings.HasPrefix(name, "+") {
273 prefix = "+"
274 nick = name[1:]
275 }
276 // Strip !user@host from userhost-in-names (IRCv3).
277 if idx := strings.Index(nick, "!"); idx != -1 {
278 nick = nick[:idx]
279 }
280 if nick != "" && nick != b.nick {
281 b.namesUsers[channel][nick] = prefix
282 }
283 }
284 b.mu.Unlock()
285 })
286

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button