summaryrefslogtreecommitdiff
path: root/irc
diff options
context:
space:
mode:
authorHubert Hirtz <hubert@hirtz.pm>2021-10-23 18:35:00 +0200
committerHubert Hirtz <hubert@hirtz.pm>2021-10-23 18:35:00 +0200
commitee838279b64e7b9fd3187c29f6fd79a342641c57 (patch)
treea9d48dd11c936422705de97ff05e29652782a816 /irc
parentDon't expect the server to send correct IRC messages (diff)
Add support for the INVITE message
Diffstat (limited to 'irc')
-rw-r--r--irc/events.go6
-rw-r--r--irc/session.go26
2 files changed, 32 insertions, 0 deletions
diff --git a/irc/events.go b/irc/events.go
index ba6e38d..4898c26 100644
--- a/irc/events.go
+++ b/irc/events.go
@@ -56,6 +56,12 @@ type ModeChangeEvent struct {
Mode string
}
+type InviteEvent struct {
+ Inviter string
+ Invitee string
+ Channel string
+}
+
type MessageEvent struct {
User string
Target string
diff --git a/irc/session.go b/irc/session.go
index 3b6a813..8a3c86b 100644
--- a/irc/session.go
+++ b/irc/session.go
@@ -863,6 +863,32 @@ func (s *Session) handleRegistered(msg Message) (Event, error) {
Mode: strings.Join(msg.Params[1:], " "),
}, nil
}
+ case "INVITE":
+ if msg.Prefix == nil {
+ return nil, errMissingPrefix
+ }
+
+ var nick, channel string
+ if err := msg.ParseParams(&nick, &channel); err != nil {
+ return nil, err
+ }
+
+ return InviteEvent{
+ Inviter: msg.Prefix.Name,
+ Invitee: nick,
+ Channel: channel,
+ }, nil
+ case rplInviting:
+ var nick, channel string
+ if err := msg.ParseParams(nil, &nick, &channel); err != nil {
+ return nil, err
+ }
+
+ return InviteEvent{
+ Inviter: s.nick,
+ Invitee: nick,
+ Channel: channel,
+ }, nil
case "PRIVMSG", "NOTICE":
if msg.Prefix == nil {
return nil, errMissingPrefix