func Whois(c Client, s Server, args []string) { if len(args) < 1 { c.Send(errors.NeedMoreParams(s.Name(), "WHOIS")) return } subject, ok := s.Find(args[0]) user, isClient := subject.(Client) if !ok || !isClient { c.Send(errors.NoSuchNick(s.Name(), args[0])) c.Send(reply.EndOfWhois(s.Name(), args[0])) return } if user.AwayMessage() != "" { c.Send(reply.Away(s.Name(), user.Name(), user.AwayMessage())) } c.Send(reply.WhoIsUser(s.Name(), user.Name(), user.UserName(), user.RealName())) c.Send(reply.WhoIsServer(s.Name(), user.Name())) if user.Channels().Any() { resp := reply.WhoIsChannels(s.Name(), user.Name(), user.Channels().Names()) for _, part := range resp.Parts() { c.Send(part) } } c.Send(reply.WhoIsIdle(s.Name(), user.Name(), 0)) c.Send(reply.EndOfWhois(s.Name(), args[0])) }
func Invite(c Client, s Server, args []string) { if len(args) < 2 { c.Send(errors.NeedMoreParams(s.Name(), "INVITE")) return } subject, ok := s.Find(args[0]) user, isClient := subject.(Client) if !ok || !isClient { c.Send(errors.NoSuchNick(s.Name(), args[0])) return } if _, ok := c.Channels().Find(args[1]); !ok { c.Send(errors.NotOnChannel(s.Name(), args[1])) return } if _, ok := user.Channels().Find(args[1]); ok { c.Send(errors.UserOnChannel(s.Name(), user.Name(), args[1])) return } subject.Send(reply.Invite(c.Name(), c.UserName(), s.Name(), subject.Name(), args[1])) }