lmao probably don't use this your computer may explode
Go to file
2016-12-13 20:19:36 -05:00
.travis.yml rename Prefix to Source 2016-11-19 09:36:17 -05:00
caller.go implement Caller.sregister(); implement separated callback execution stacks; implement Caller.remove() 2016-12-13 20:19:36 -05:00
client_test.go use variadic array for Client.Join(); update examples 2016-12-13 10:45:08 -05:00
client.go use variadic array for Client.Join(); update examples 2016-12-13 10:45:08 -05:00
conn.go fix docs; strip newlines from events during byte and string conversion 2016-11-22 19:32:14 -05:00
contants.go prevent reconnect from looping on top of itself, add Client.Stop() 2016-11-19 12:36:33 -05:00
doc.go main.go->client.go, add doc.go for main documentation 2016-12-09 06:43:52 -05:00
event_test.go remove Sender; merge with event.go 2016-11-22 21:58:26 -05:00
event.go remove Sender; merge with event.go 2016-11-22 21:58:26 -05:00
format_test.go implement IsValidUser() 2016-11-22 10:01:44 -05:00
format.go add example to Format() 2016-11-22 14:49:20 -05:00
helpers.go implement Caller.sregister(); implement separated callback execution stacks; implement Caller.remove() 2016-12-13 20:19:36 -05:00
LICENSE first commit 2016-11-13 03:30:43 -05:00
README.md refactor Join()/Part(); implement JoinKey() and PartMessage() 2016-12-13 09:34:08 -05:00
source_test.go rename Source.User -> Ident 2016-12-09 06:34:38 -05:00
source.go rename Source.User -> Ident 2016-12-09 06:34:38 -05:00
state.go hasQuit->quitting; add stopChan; other minor bug fixes 2016-12-13 10:23:06 -05:00

girc is a flexible IRC library for Go

Build Status GoDoc codebeat badge Go Report Card IRC Chat GitHub Issues license

Features

  • Focuses on simplicity, yet tries to still be flexible
  • Only requires standard packages
  • Event based triggering/responses
  • Documentation is mostly on par
  • At this time, expect breaking changes to occur frequently.

TODO

  • implement Who() which actually returns results
  • make sure client can easily be garbage collected
  • 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
  • would be cool to track things like SERVERNAME, VERSION, UMODES, CMODES, etc. also see Config.DisableCapTracking. e.g. here
  • client should support ping tracking (sending PING's to the server)
    • with this, we can potentially find lag. Client.Lag() would be useful
  • users need to be exposed in state somehow (other than GetChannels())
  • User.Age()? (FirstActive()?) (time since first seen)
  • MODE tracking on a per-channel basis
  • Client.AddTmpCallback() for one time use callbacks?

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>