lmao probably don't use this your computer may explode
Go to file
2017-01-19 06:58:08 -05:00
.travis.yml rename Prefix to Source 2016-11-19 09:36:17 -05:00
caller.go yay new year 2017-01-03 11:05:27 -05:00
cap.go rewrite capability ack functionality 2017-01-19 06:58:08 -05:00
client_test.go yay new year 2017-01-03 11:05:27 -05:00
client.go rewrite capability ack functionality 2017-01-19 06:58:08 -05:00
conn.go yay new year 2017-01-03 11:05:27 -05:00
contants.go add CAP NEW and CAP DEL checking and responding 2017-01-19 03:33:49 -05:00
ctcp_test.go yay new year 2017-01-03 11:05:27 -05:00
ctcp.go implement version config option to override default ctcp version 2017-01-12 02:34:29 -05:00
doc.go yay new year 2017-01-03 11:05:27 -05:00
event_test.go yay new year 2017-01-03 11:05:27 -05:00
event.go fix bug which caused messages with colons within the prefix to have invalid trailing data 2017-01-06 07:52:51 -05:00
format_test.go yay new year 2017-01-03 11:05:27 -05:00
format.go yay new year 2017-01-03 11:05:27 -05:00
handlers.go add handleTags, cleanup state modifications 2017-01-19 02:34:14 -05:00
LICENSE first commit 2016-11-13 03:30:43 -05:00
README.md add IRCv3 batch support (don't do anything extra) 2017-01-19 05:56:40 -05:00
source_test.go yay new year 2017-01-03 11:05:27 -05:00
source.go yay new year 2017-01-03 11:05:27 -05:00
state.go rewrite capability ack functionality 2017-01-19 06:58:08 -05:00

girc -- A flexible IRC library for Go

Build Status GoDoc Go Report Card IRC Chat GitHub Issues License

Features

  • Focuses on simplicity, yet tries to still be flexible.

  • Only requires standard library packages.

  • Event based triggering/responses (and CTCP too!).

  • Documentation is mostly on par.

  • Full support for the IRCv3 spec. [WIP]

  • Channel and user tracking. Easily find what users are in a channel, if a user is away, or if they are authenticated.

  • Client state/capability tracking. Easy methods to access capability data.

  • Built-in support for things you would commmonly have to implement yourself.

    • Nick collision detection and prevention.
    • Event/message rate limiting.
    • Channel, nick, and user validation on connection methods.
    • CTCP handling and auto-responses.
  • At this time, expect breaking changes to occur frequently. girc has not hit version 1.0.0 yet!

TODO

  • IRCv3 spec -- details:
  • ensure types User and Channel don't have any unexported fields, and that when they are given publically, it's not a pointer to internal state.
  • track with NAMES as well? would require rewrite of user existance logic, could also help track user modes.
  • write more function-specific examples as the api becomes much more stable
  • client should support ping tracking (sending PING's to the server)
    • with this, we can potentially find lag. Client.Lag() would be useful
    • allow support for changing the frequency of this?
  • users need to be exposed in state some how (other than GetChannels())
  • MODE tracking on a per-channel basis
  • Client.AddTmpCallback() for one time use callbacks?
  • allow support for proxy URLs (passing to golang.org/x/net/proxy?)
  • allow users to specify a local/bind address using net.Dialer{}.LocalAddr
  • add more generic helpers: Away(), Invite(), Kick(), Oper(), generic Ping() and Pong(), VHost(), Whois() and Who()

Installing

$ go get -u github.com/lrstanley/girc

Examples

See the examples within the documentation for real-world usecases.

Contributing

Below are a few guidelines if you would like to contribute. Keep the code clean, standardized, and much of the quality should match Golang's standard library and common idioms.

  • Always test using the latest Go version.
  • Always use gofmt before committing anything.
  • Always have proper documentation before committing.
  • Keep the same whitespacing, documentation, and newline format as the rest of the project.
  • Only use 3rd party libraries if necessary. If only a small portion of the library is needed, simply rewrite it within the library to prevent useless imports.
  • Also see golang/go/wiki/CodeReviewComments

License

The MIT License (MIT); Copyright (c) Liam Stanley <me@liamstanley.io>