diff options
Diffstat (limited to '')
| -rw-r--r-- | irc/events.go | 2 | ||||
| -rw-r--r-- | irc/states.go | 24 |
2 files changed, 24 insertions, 2 deletions
diff --git a/irc/events.go b/irc/events.go index c2af056..96bf786 100644 --- a/irc/events.go +++ b/irc/events.go @@ -32,6 +32,7 @@ func (c ChannelEvent) ChannelMapped() (channel string) { type UserJoinEvent struct { UserEvent ChannelEvent + Time time.Time } type SelfPartEvent struct { @@ -41,6 +42,7 @@ type SelfPartEvent struct { type UserPartEvent struct { UserEvent ChannelEvent + Time time.Time } type SelfJoinEvent struct { diff --git a/irc/states.go b/irc/states.go index 40ac308..c19f1db 100644 --- a/irc/states.go +++ b/irc/states.go @@ -527,7 +527,17 @@ func (s *Session) handle(msg Message) (ev Event, err error) { s.users[lNick] = User{Nick: nick} } c.Members[lNick] = "" - ev = UserJoinEvent{ChannelEvent: channelEv, UserEvent: UserEvent{Nick: nick}} + + t, ok := msg.Time() + if !ok { + t = time.Now() + } + + ev = UserJoinEvent{ + ChannelEvent: channelEv, + UserEvent: UserEvent{Nick: nick}, + Time: t, + } } case "PART": nick, _, _ := FullMask(msg.Prefix) @@ -540,7 +550,17 @@ func (s *Session) handle(msg Message) (ev Event, err error) { ev = SelfPartEvent{ChannelEvent: channelEv} } else if c, ok := s.channels[channel]; ok { delete(c.Members, lNick) - ev = UserPartEvent{ChannelEvent: channelEv, UserEvent: UserEvent{Nick: nick}} + + t, ok := msg.Time() + if !ok { + t = time.Now() + } + + ev = UserPartEvent{ + ChannelEvent: channelEv, + UserEvent: UserEvent{Nick: nick}, + Time: t, + } } case "353": // RPL_NAMREPLY channel := strings.ToLower(msg.Params[2]) |
