summaryrefslogtreecommitdiff
path: root/irc
diff options
context:
space:
mode:
Diffstat (limited to 'irc')
-rw-r--r--irc/events.go5
-rw-r--r--irc/session.go8
2 files changed, 13 insertions, 0 deletions
diff --git a/irc/events.go b/irc/events.go
index eeac8fb..ba6e38d 100644
--- a/irc/events.go
+++ b/irc/events.go
@@ -51,6 +51,11 @@ type TopicChangeEvent struct {
Topic string
}
+type ModeChangeEvent struct {
+ Channel string
+ Mode string
+}
+
type MessageEvent struct {
User string
Target string
diff --git a/irc/session.go b/irc/session.go
index f799f38..692daf4 100644
--- a/irc/session.go
+++ b/irc/session.go
@@ -741,6 +741,14 @@ func (s *Session) handleRegistered(msg Message) Event {
Topic: c.Topic,
}
}
+ case "MODE":
+ channelCf := s.Casemap(msg.Params[0])
+ if c, ok := s.channels[channelCf]; ok {
+ return ModeChangeEvent{
+ Channel: c.Name,
+ Mode: strings.Join(msg.Params[1:], " "),
+ }
+ }
case "PRIVMSG", "NOTICE":
targetCf := s.casemap(msg.Params[0])
nickCf := s.casemap(msg.Prefix.Name)