Libraries to help with IRC development in Go. Mirror/fork of https://github.com/ergochat/irc-go https://github.com/ergochat/irc-go
irc
Go to file
Russ Garrett 9fa2a77567
Fix SASL where additional caps are requested
Where additional caps were requested using `RequestCaps`, SASL would
send an `AUTHENTICATE` command for each one which servers don't like.
Check that we're responding to the correct `CAP ACK`.
2019-02-21 12:22:37 +00:00
examples/simple fix import statement to correct repo name 2016-11-07 20:19:02 -06:00
irc_callback.go Merge pull request #104 from sadbox/parallel 2018-08-16 06:31:03 +02:00
irc_parse_test.go Run all callbacks in parallel 2018-05-18 15:19:14 -07:00
irc_sasl_test.go Run all callbacks in parallel 2018-05-18 15:19:14 -07:00
irc_sasl.go Fix SASL where additional caps are requested 2019-02-21 12:22:37 +00:00
irc_struct.go Merge pull request #103 from sadbox/master 2018-08-16 06:30:43 +02:00
irc_test_fuzz.go Move fuzzing code to seperate file 2015-07-31 21:33:36 +02:00
irc_test.go Run all callbacks in parallel 2018-05-18 15:19:14 -07:00
irc.go Run all callbacks in parallel 2018-05-18 15:19:14 -07:00
LICENSE LICENSE, Same as go itself. 2009-11-18 16:03:14 +01:00
README.markdown Link to example in README 2016-11-05 19:17:13 +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 examples/simple/simple.go and 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("<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") // sends a message to either a certain nick or a channel
ircobj.Privmsgf(<nickname | #channel>, "<formatstring>", ...)
ircobj.Notice("<nickname | #channel>", "msg")
ircobj.Noticef("<nickname | #channel>", "<formatstring>", ...)