girc, a flexible IRC library for Go
## Features - Focuses on simplicity, yet tries to still be flexible. - Only requires [standard library packages](https://godoc.org/github.com/lrstanley/girc?imports) - Event based triggering/responses ([example](https://godoc.org/github.com/lrstanley/girc#ex-package--Commands), and [CTCP too](https://godoc.org/github.com/lrstanley/girc#Commands.SendCTCP)!) - [Documentation](https://godoc.org/github.com/lrstanley/girc) is _mostly_ complete. - Support for a good portion of the [IRCv3 spec](http://ircv3.net/software/libraries.html). - SASL Auth (currently only `PLAIN` and `EXTERNAL` is support by default, however you can simply implement `SASLMech` yourself to support additional mechanisms.) - Message tags (things like `account-tag` on by default) - `account-notify`, `away-notify`, `chghost`, `extended-join`, etc -- all handled seemlessly ([cap.go](https://github.com/lrstanley/girc/blob/master/cap.go) for more info). - Channel and user tracking. Easily find what users are in a channel, if a user is away, or if they are authenticated (if the server supports it!) - Client state/capability tracking. Easy methods to access capability data ([LookupChannel](https://godoc.org/github.com/lrstanley/girc#Client.LookupChannel), [LookupUser](https://godoc.org/github.com/lrstanley/girc#Client.LookupUser), [GetServerOption (ISUPPORT)](https://godoc.org/github.com/lrstanley/girc#Client.GetServerOption), etc.) - Built-in support for things you would commonly have to implement yourself. - Nick collision detection and prevention (also see [Config.HandleNickCollide](https://godoc.org/github.com/lrstanley/girc#Config).) - Event/message rate limiting. - Channel, nick, and user validation methods ([IsValidChannel](https://godoc.org/github.com/lrstanley/girc#IsValidChannel), [IsValidNick](https://godoc.org/github.com/lrstanley/girc#IsValidNick), etc.) - CTCP handling and auto-responses ([CTCP](https://godoc.org/github.com/lrstanley/girc#CTCP)) - And more! ## Installing $ go get -u github.com/lrstanley/girc ## Examples See [the examples](https://godoc.org/github.com/lrstanley/girc#example-package--Bare) within the documentation for real-world usecases. Here are a few real-world usecases/examples/projects which utilize girc: | Project | Description | | --- | --- | | [nagios-check-ircd](https://github.com/lrstanley/nagios-check-ircd) | Nagios utility for monitoring the health of an ircd | | [nagios-notify-irc](https://github.com/lrstanley/nagios-notify-irc) | Nagios utility for sending alerts to one or many channels/networks | | [matterbridge](https://github.com/42wim/matterbridge) | bridge between mattermost, IRC, slack, discord (and many others) with REST API | Working on a project and want to add it to the list? Submit a pull request! ## Contributing Please review the [CONTRIBUTING](CONTRIBUTING.md) doc for submitting issues/a guide on submitting pull requests and helping out. ## License Copyright (c) 2016 Liam Stanley