summaryrefslogtreecommitdiff
path: root/irc/states.go
diff options
context:
space:
mode:
Diffstat (limited to 'irc/states.go')
-rw-r--r--irc/states.go18
1 files changed, 14 insertions, 4 deletions
diff --git a/irc/states.go b/irc/states.go
index aba6536..0896dca 100644
--- a/irc/states.go
+++ b/irc/states.go
@@ -7,6 +7,7 @@ import (
"errors"
"fmt"
"io"
+ "strconv"
"strings"
"sync/atomic"
"time"
@@ -248,13 +249,14 @@ func (s *Session) IsChannel(name string) bool {
return strings.IndexAny(name, "#&") == 0 // TODO compute CHANTYPES
}
-func (s *Session) Topic(channel string) string {
+func (s *Session) Topic(channel string) (topic string, who string, at time.Time) {
channelCf := strings.ToLower(channel)
if c, ok := s.channels[channelCf]; ok {
- return c.Topic
- } else {
- return ""
+ topic = c.Topic
+ who = c.TopicWho
+ at = c.TopicTime
}
+ return
}
func (s *Session) SendRaw(raw string) {
@@ -697,6 +699,14 @@ func (s *Session) handle(msg Message) (err error) {
c.Topic = msg.Params[2]
s.channels[channelCf] = c
}
+ case rplTopicwhotime:
+ channelCf := strings.ToLower(msg.Params[1])
+ t, _ := strconv.ParseInt(msg.Params[3], 10, 64)
+ if c, ok := s.channels[channelCf]; ok {
+ c.TopicWho = msg.Params[2]
+ c.TopicTime = time.Unix(t, 0)
+ s.channels[channelCf] = c
+ }
case rplNotopic:
channelCf := strings.ToLower(msg.Params[1])
if c, ok := s.channels[channelCf]; ok {