goirc/README.md

54 lines
1.7 KiB
Markdown
Raw Normal View History

2009-12-17 21:12:37 +00:00
GoIRC Client Framework
======================
### Acquiring and Building
2010-10-13 21:34:33 +00:00
git clone git://github.com/raylu/rbot.git
2009-12-17 21:12:37 +00:00
make -C irc install
2010-10-13 21:34:33 +00:00
You can build the bot with:
2009-12-17 21:12:37 +00:00
make
./gobot
2010-10-13 21:34:33 +00:00
This will connect to rizon and join `#vn-meta` by default, so be careful ;-)
2009-12-17 21:12:37 +00:00
### Using the framework
2009-12-17 21:47:33 +00:00
Synopsis:
import "irc"
func main() {
c := irc.New("nick", "ident", "real name")
// add handlers to do things here!
if err := c.Connect("irc.freenode.net", ""); err != nil {
fmt.Printf("Connection error: %s\n", err.String())
}
for {
if closed(c.Err) {
break
}
if err := <-c.Err; err != nil {
fmt.Printf("goirc error: %s", err.String())
}
}
}
2009-12-17 21:12:37 +00:00
The test client provides a good (if basic) example of how to use the framework.
Reading `irc/handlers.go` gives a more in-depth look at how handlers can be
2009-12-17 21:12:37 +00:00
written. Commands to be sent to the server (e.g. PRIVMSG) are methods of the
main `*irc.Conn` object, and can be found in `irc/commands.go` (not all of the
2009-12-17 21:12:37 +00:00
possible IRC commands are implemented yet). Events are produced directly from
the messages from the IRC server, so you have to handle e.g. "332" for
`RPL_TOPIC` to get the topic for a channel.
2009-12-17 21:12:37 +00:00
2009-12-17 21:47:33 +00:00
The vast majority of handlers implemented within the framework deal with state
tracking of all nicks in any channels that the client is also present in. It's
2009-12-17 21:12:37 +00:00
likely that this state tracking will become optional in the near future.
### Misc.
2010-10-13 21:34:33 +00:00
This project was forked from jessta/goirc which is in turn forked from
fluffle/goirc. Both of those projects are focused on developing the goirc
framework whereas this is focused on developing a bot.