girc-atomic/README.md
2016-11-22 10:01:44 -05:00

3.1 KiB

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

  • Should Client.Message() an other similar methods support errors?
    • along with this, should we forcefully check to ensure that the target/events are valid?
  • track connection time (conntime? in state)
  • with conntime, find lag. Client.Lag() would be useful
  • 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)
  • users need to be exposed in state somehow (other than GetChannels())
  • ip/host binding?
  • User.Age()? (FirstActive()?) (time since first seen)
  • cleanup docs in conn.go & event.go
  • add Client.IsInChannel()? and/or basic channel list
  • add Client.Topic(topic string)
  • MODE tracking on a per-channel basis
  • Client.AddTmpCallback() for one time use callbacks?

Installing

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

Examples

See girc/examples/ for some examples.

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>