예제 #1
0
파일: invite.go 프로젝트: Codesleuth/iirc
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]))
}
예제 #2
0
파일: part.go 프로젝트: Codesleuth/iirc
func Part(c Client, s Server, args []string) {
	if len(args) < 1 {
		c.Send(errors.NeedMoreParams(s.Name(), "PART"))
		return
	}

	channel, ok := c.Channels().Find(args[0])

	if !ok {
		c.Send(errors.NotOnChannel(s.Name(), args[0]))
		return
	}

	channel.Send(reply.Part(c.Name(), c.UserName(), s.Name(), channel.Name()))
	s.Part(c, args[0])
}