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.
Commit
dddd99f3509daf804d1d1385968f6f2afcf15fccebb53617386f83657b210898
Parent
75496910c878224…
1 file changed
+5
-1
+5
-1
| --- internal/bots/bridge/bridge.go | ||
| +++ internal/bots/bridge/bridge.go | ||
| @@ -271,11 +271,15 @@ | ||
| 271 | 271 | nick = name[1:] |
| 272 | 272 | } else if strings.HasPrefix(name, "+") { |
| 273 | 273 | prefix = "+" |
| 274 | 274 | nick = name[1:] |
| 275 | 275 | } |
| 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 { | |
| 277 | 281 | b.namesUsers[channel][nick] = prefix |
| 278 | 282 | } |
| 279 | 283 | } |
| 280 | 284 | b.mu.Unlock() |
| 281 | 285 | }) |
| 282 | 286 |
| --- 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 |