goirc/client/doc.go

35 lines
1.4 KiB
Go
Raw Normal View History

// Package client implements an IRC client. It handles protocol basics
// such as initial connection and responding to server PINGs, and has
// optional state tracking support which will keep tabs on every nick
// present in the same channels as the client. Other features include
// SSL support, automatic splitting of long lines, and panic recovery
// for handlers.
//
// Incoming IRC messages are parsed into client.Line structs and trigger
// events based on the IRC verb (e.g. PRIVMSG) of the message. Handlers
// for these events conform to the client.Handler interface; a HandlerFunc
// type to wrap bare functions is provided a-la the net/http package.
//
// Creating a client, adding a handler and connecting to a server looks
// soemthing like this, for the simple case:
//
// // Create a new client, which will connect with the nick "myNick"
// irc := client.SimpleClient("myNick")
//
// // Add a handler that waits for the "disconnected" event and
// // closes a channel to signal everything is done.
// disconnected := make(chan struct{})
// c.HandleFunc("disconnected", func(c *client.Conn, l *client.Line) {
// close(disconnected)
// })
//
// // Connect to an IRC server.
// if err := c.ConnectTo("irc.freenode.net"); err != nil {
// log.Fatalf("Connection error: %v\n", err)
// }
//
// // Wait for disconnection.
// <-disconnected
//
package client