func (c clientHandler) OnReceive(l message.M) { if l.Command == "QUIT" { c.client.Send(message.Message3( nil, "ERROR", message.ParamsT([]string{}, "Closing Link: "+c.client.Name()))) c.client.Channels().Each(func(ch *channel.Channel) { ch.Send(message.Message3( message.Prefix(c.client.Name(), c.client.UserName(), c.client.server.Name()), "QUIT", nil)) }) c.client.Close() return } if handler, ok := handlers[l.Command]; ok { handler(c.client, c.client.server, l.Args()) } }
func WhoIsServer(host, user string) message.M { return message.Message3( message.Prefix(host), RPL_WHOISSERVER, message.ParamsT([]string{user, host}, "")) }
func ChannelModeIs(host, nick, channel string) message.M { return message.Message3( message.Prefix(host), RPL_CHANNELMODEIS, message.Params([]string{nick, channel, "+"})) }
func Away(host, nick, awayMsg string) message.M { return message.Message3( message.Prefix(host), RPL_AWAY, message.ParamsT([]string{nick}, awayMsg)) }
func WhoIsUser(host, nick, user, realName string) message.M { return message.Message3( message.Prefix(host), RPL_WHOISUSER, message.ParamsT([]string{nick, user, host, "*"}, realName)) }
func Invite(nick, user, host, subject, channel string) message.M { return message.Message3( message.Prefix(nick, user, host), "INVITE", message.ParamsT([]string{subject}, channel)) }
func WhoReply(host, me, subject, user, nick, realName string) message.M { return message.Message3( message.Prefix(host), RPL_WHOREPLY, message.ParamsT([]string{me, subject, user, host, host, nick, "H"}, "0 "+realName)) }
func Join(nickName, userName, serverName, channelName string) message.M { return message.Message3( message.Prefix(nickName, userName, serverName), "JOIN", message.ParamsT([]string{}, channelName)) }
func UserModeIs(host, nick string) message.M { return message.Message3( message.Prefix(host), RPL_UMODEIS, message.Params([]string{nick, "+"})) }
func NowAway(host string) message.M { return message.Message3( message.Prefix(host), "306", message.ParamsT([]string{}, "You have been marked as being away")) }
func UnAway(host string) message.M { return message.Message3( message.Prefix(host), "305", message.ParamsT([]string{}, "You are no longer marked as being away")) }
func Nick(oldName, newName string) message.M { return message.Message3( message.Prefix(oldName), "NICK", message.Params([]string{newName})) }
func Welcome(serverName, nickName string) message.M { return message.Message3( message.Prefix(serverName), RPL_WELCOME, message.Params([]string{nickName})) }
func EndOfNames(serverName, nickName, channelName string) message.M { return message.Message3( message.Prefix(serverName), RPL_ENDOFNAMES, message.ParamsT([]string{nickName, channelName}, "End of /NAMES list.")) }
func EndOfWho(host, user, subject string) message.M { return message.Message3( message.Prefix(host), RPL_ENDOFWHO, message.Params([]string{user, subject})) }
func WhoIsChannels(host, nick string, channels []string) message.M { return message.Message3( message.Prefix(host), RPL_WHOISCHANNELS, message.ParamsT([]string{nick}, strings.Join(channels, " "))) }
func Topic(host, channel, topic string) message.M { return message.Message3( message.Prefix(host), RPL_TOPIC, message.ParamsT([]string{channel}, topic)) }
func WhoIsIdle(host, nick string, seconds int) message.M { return message.Message3( message.Prefix(host), RPL_WHOISIDLE, message.ParamsT([]string{nick, strconv.Itoa(seconds)}, "seconds idle")) }
func Pong(host, address string) message.M { return message.Message3( message.Prefix(host), "PONG", message.Params([]string{address})) }
func Part(nickName, userName, serverName, channel string) message.M { return message.Message3( message.Prefix(nickName, userName, serverName), "PART", message.ParamsT([]string{channel}, nickName)) }
func EndOfBanList(host, nick, channel string) message.M { return message.Message3( message.Prefix(host), RPL_ENDOFBANLIST, message.ParamsT([]string{nick, channel}, "End of Channel Ban List")) }
func WhoIsOperator(host, nick string) message.M { return message.Message3( message.Prefix(host), RPL_WHOISOPERATOR, message.ParamsT([]string{nick}, "is an IRC oeprator")) }
func Notice(nick, user, host, subject, msg string) message.M { return message.Message3( message.Prefix(nick, user, host), "NOTICE", message.ParamsT([]string{subject}, msg)) }
func TopicChange(nickName, userName, serverName, channel, topic string) message.M { return message.Message3( message.Prefix(nickName, userName, serverName), "TOPIC", message.ParamsT([]string{channel}, topic)) }
func err(host, code string, params []string, text string) message.M { return message.Message3( message.Prefix(host), code, message.ParamsT(params, text)) }
func NameReply(serverName, nickName, channelName string, names []string) message.M { return message.Message3( message.Prefix(serverName), RPL_NAMREPLY, message.ParamsT([]string{nickName, "=", channelName}, strings.Join(names, " "))) }
func PrivMsg(nick, user, host, subject, msg string) message.M { return message.Message3( message.Prefix(nick, user, host), "PRIVMSG", message.ParamsT([]string{subject}, msg)) }