summaryrefslogtreecommitdiff
path: root/irc
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--irc/events.go2
-rw-r--r--irc/states.go24
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])