summaryrefslogtreecommitdiff
path: root/irc
diff options
context:
space:
mode:
authorHubert Hirtz <hubert@hirtzfr.eu>2020-08-05 22:41:32 +0200
committerHubert Hirtz <hubert@hirtzfr.eu>2020-08-05 22:41:32 +0200
commitd0dbcfee3bc32a8e0f8765363c1f5516161a4a76 (patch)
tree578b5f879d0153eaf34a26ba91106c4a1ecda6ca /irc
parentFix colors not being reset with \x03 (diff)
Show NICK changes
Diffstat (limited to 'irc')
-rw-r--r--irc/events.go20
-rw-r--r--irc/states.go16
2 files changed, 32 insertions, 4 deletions
diff --git a/irc/events.go b/irc/events.go
index 72a5880..b585915 100644
--- a/irc/events.go
+++ b/irc/events.go
@@ -34,6 +34,22 @@ func (c ChannelEvent) ChannelMapped() (channel string) {
return
}
+type SelfNickEvent struct {
+ FormerNick string
+ NewNick string
+ Time time.Time
+}
+
+type UserNickEvent struct {
+ FormerNick string
+ NewNick string
+ Time time.Time
+}
+
+type SelfJoinEvent struct {
+ ChannelEvent
+}
+
type UserJoinEvent struct {
UserEvent
ChannelEvent
@@ -50,10 +66,6 @@ type UserPartEvent struct {
Time time.Time
}
-type SelfJoinEvent struct {
- ChannelEvent
-}
-
type QueryMessageEvent struct {
UserEvent
Command string
diff --git a/irc/states.go b/irc/states.go
index 727dfa3..2e0edf9 100644
--- a/irc/states.go
+++ b/irc/states.go
@@ -736,10 +736,26 @@ func (s *Session) handleInner(msg Message) (err error) {
newNick := msg.Params[0]
lNewNick := strings.ToLower(newNick)
+ t, ok := msg.Time()
+ if !ok {
+ t = time.Now()
+ }
+
if lNick == s.lNick {
+ s.evts <- SelfNickEvent{
+ FormerNick: s.nick,
+ NewNick: newNick,
+ Time: t,
+ }
s.nick = newNick
s.lNick = lNewNick
} else {
+ s.evts <- UserNickEvent{
+ FormerNick: nick,
+ NewNick: newNick,
+ Time: t,
+ }
+ // TODO update state
}
case "FAIL":
fmt.Println("FAIL", msg.Params)