lmao probably don't use this your computer may explode
Go to file
2016-12-15 00:31:50 -05:00
.travis.yml rename Prefix to Source 2016-11-19 09:36:17 -05:00
caller.go drop callback type functionality for wrapping background callbacks in a go-routine; drop Caller.AddBgHandler() 2016-12-14 01:31:25 -05:00
client_test.go use variadic array for Client.Join(); update examples 2016-12-13 10:45:08 -05:00
client.go re-implement Client.Whowas(); implement Client.Who() 2016-12-14 01:49:43 -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 drop callback type functionality for wrapping background callbacks in a go-routine; drop Caller.AddBgHandler() 2016-12-14 01:31:25 -05:00
LICENSE first commit 2016-11-13 03:30:43 -05:00
README.md update TODOs 2016-12-15 00:31:50 -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 re-implement Client.Whowas(); implement Client.Who() 2016-12-14 01:49:43 -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

  • User and Channel should support methods which return events:
    • User.Reply(), User.Replyf()
    • User.Message(), User.Messagef()
    • User.Who(), etc
  • implement CTCP callbacks. something like CTCP_VERSION, etc
  • 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>