Simple irc client.
See examples for full usage.
To connect to an irc server, instantiate a Client, passing the irc server address as an argument, and call `Connect.
client := irc.NewClient("localhost:6667")
if err := client.Connect(); err != nil {
log.Fatal(err)
}
defer client.Close()
To send a command, call the CMD function on a connected `Client.
if err := client.Cmd(irc.NICK, "my_nickname"); err != nil {
log.Fatal(err)
}
There are two types of handler:
- Reply - handles a response to a command sent by the client.
- Command - handles a command sent from the server.
To register a handler, call the respective handler registration function.
client.HandleCommand(irc.PING, func(e *irc.Event) {
client.Cmd(irc.PONG, "I'm here!")
})
client.HandleReply(irc.RPL_WELCOME, func(e *irc.Event) {
client.Cmd(irc.JOIN, "#channel")
})
Note in order for handlers to be called, the client must be writing server output. See Writing.
To write output from the server, call the WriteTo function passing an io.Writer as an argument.
If nil is passed as an argument the server output will be read but not written to an output destination.
if err := client.WriteTo(os.Stdout); err != nil {
log.Fatal(err)
}
To read input to send to the server, call the ReadFrom function passing an io.Reader as an argument.
if err := client.ReadFrom(os.Stdin); err != nil {
log.Fatal(err)
}
All irc response codes and commands, as defined in RFC 2812, are exposed by this package.