Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/thoj/go-ircevent

Event based IRC client library in Go (golang)
https://github.com/thoj/go-ircevent

Last synced: about 2 months ago
JSON representation

Event based IRC client library in Go (golang)

Awesome Lists containing this project

README

        

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 [examples/simple/simple.go](examples/simple/simple.go) and [irc_test.go](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) {
//event.Message() contains the message
//event.Nick Contains the sender
//event.Arguments[0] Contains the channel
});

Please note: Callbacks are run in the main thread. If a callback needs a long
time to execute please run it in a new thread.

Example:

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

Commands
--------
ircobj := irc.IRC("", "") //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("") //sends string to server. Adds \r\n
ircobj.SendRawf("", ...) //sends formatted string to server.n
ircobj.Join("<#channel> [password]")
ircobj.Nick("newnick")
ircobj.Privmsg("", "msg") // sends a message to either a certain nick or a channel
ircobj.Privmsgf(, "", ...)
ircobj.Notice("", "msg")
ircobj.Noticef("", "", ...)