diff options
author | Hubert Hirtz <hubert@hirtz.pm> | 2021-10-23 18:35:00 +0200 |
---|---|---|
committer | Hubert Hirtz <hubert@hirtz.pm> | 2021-10-23 18:35:00 +0200 |
commit | ee838279b64e7b9fd3187c29f6fd79a342641c57 (patch) | |
tree | a9d48dd11c936422705de97ff05e29652782a816 /irc | |
parent | Don'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.go | 6 | ||||
-rw-r--r-- | irc/session.go | 26 |
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 |