commit 94b025d
Hubert Hirtz
·
2020-10-19 12:25:14 +0000 UTC
parent 8fb22a1
Handle KICK messages
2 files changed,
+27,
-2
+26,
-1
1@@ -700,7 +700,7 @@ func (s *Session) handle(msg Message) (err error) {
2 for u := range c.Members {
3 s.cleanUser(u)
4 }
5- s.evts <- SelfPartEvent{Channel: msg.Params[0]}
6+ s.evts <- SelfPartEvent{Channel: c.Name}
7 }
8 } else if c, ok := s.channels[channelCf]; ok {
9 if u, ok := s.users[nickCf]; ok {
10@@ -715,6 +715,31 @@ func (s *Session) handle(msg Message) (err error) {
11 }
12 }
13 }
14+ case "KICK":
15+ channelCf := s.Casemap(msg.Params[0])
16+ nickCf := s.Casemap(msg.Params[1])
17+
18+ if nickCf == s.nickCf {
19+ if c, ok := s.channels[channelCf]; ok {
20+ delete(s.channels, channelCf)
21+ for u := range c.Members {
22+ s.cleanUser(u)
23+ }
24+ s.evts <- SelfPartEvent{Channel: c.Name}
25+ }
26+ } else if c, ok := s.channels[channelCf]; ok {
27+ if u, ok := s.users[nickCf]; ok {
28+ delete(c.Members, u)
29+ s.cleanUser(u)
30+ s.typings.Done(channelCf, nickCf)
31+
32+ s.evts <- UserPartEvent{
33+ User: u.Name.Copy(),
34+ Channel: c.Name,
35+ Time: msg.TimeOrNow(),
36+ }
37+ }
38+ }
39 case "QUIT":
40 nickCf := s.Casemap(msg.Prefix.Name)
41
+1,
-1
1@@ -311,7 +311,7 @@ func (msg *Message) IsValid() bool {
2 return 8 <= len(msg.Params)
3 case "JOIN", "NICK", "PART", "TAGMSG":
4 return 1 <= len(msg.Params) && msg.Prefix != nil
5- case "PRIVMSG", "NOTICE", "TOPIC":
6+ case "KICK", "PRIVMSG", "NOTICE", "TOPIC":
7 return 2 <= len(msg.Params) && msg.Prefix != nil
8 case "QUIT":
9 return msg.Prefix != nil