Event based IRC client library in Go (golang)
Go to file
Chance Zibolski 30980fcbad Retrieve error chan from method.
This allows using the error chan in an interface.

Also moved the disconnect error into a named variable for checking specific
errors.
2014-07-14 16:02:09 -07:00
irc_callback.go Add default callback for ERROR 2014-06-18 15:58:18 +02:00
irc_struct.go Close channel to signal goroutines to quit and waitgroup to confirm that they have 2014-05-02 23:20:51 +01:00
irc_test.go Modified test 1 2014-06-18 15:56:42 +02:00
irc.go Retrieve error chan from method. 2014-07-14 16:02:09 -07:00
LICENSE LICENSE, Same as go itself. 2009-11-18 16:03:14 +01:00
README.markdown (ocd) markup fix 2014-02-14 17:56:19 +01:00

Description

Event based irc client library.

Features

  • Event based. Register Callbacks for the events you need to handle.
  • Handles basic irc demands for you
    • Standard CTCP
    • Reconnections on errors
    • Detect stoned servers

Install

$ go get github.com/thoj/go-ircevent

Example

See test/irc_test.go

Events for callbacks

  • 001 Welcome
  • PING
  • CTCP Unknown CTCP
  • CTCP_VERSION Version request (Handled internaly)
  • CTCP_USERINFO
  • CTCP_CLIENTINFO
  • CTCP_TIME
  • CTCP_PING
  • CTCP_ACTION (/me)
  • PRIVMSG
  • MODE
  • JOIN

+Many more

AddCallback Example

ircobj.AddCallback("PRIVMSG", func(event *irc.Event) {
	//e.Message() contains the message
	//e.Nick Contains the sender
	//e.Arguments[0] Contains the channel
});

Commands

ircobj := irc.IRC("<nick>", "<user>") //Create new ircobj
//Set options
ircobj.UseTLS = true //default is false
//ircobj.TLSOptions //set ssl options
ircobj.Password = "[server password]"
//Commands
ircobj.Connect("irc.someserver.com:6667") //Connect to server
ircobj.Sendraw("<string>") //sends string to server. Adds \r\n
ircobj.Sendrawf("<formatstring>", ...) //sends formatted string to server.n
ircobj.Join("<#channel> [password]") 
ircobj.Nick("newnick") 
ircobj.Privmsg("<nickname | #channel>", "msg")
ircobj.Privmsgf(<nickname | #channel>, "<formatstring>", ...)
ircobj.Notice("<nickname | #channel>", "msg")
ircobj.Noticef("<nickname | #channel>", "<formatstring>", ...)