summaryrefslogblamecommitdiff
path: root/README.md
blob: 688c9bb13bff300bd154571f77cb8b7c126955fb (plain) (tree)
1
2
3
4
5
6
7
8
9
            
 
                                                                                                                 


                                                                             


                                                                                                                     




                                                                                                              

                                                                                                                      










                                                                                                          















                                                                                  
# Elixir/Irc

A modern IRC toolkit for Elixir. Compatible IRCv3. Meant to build clients, bouncers, bots, servers, and services.

* `Irc.Parser` a versatile IRC parser;
* `Irc.Connection` a basic IRC connection (handling registration and socket);
* `Irc.Server` client server (todo);
* `Irc.TS6` TS6 Server (todo);
* `Irc.Client` a fully featured and extensible IRC client (should be usable with `.Connection`, `.Server` or `.TS6`).

Examples of usage: `Irc.Shout` (a simple connect-join-message-quit on Connection), `Irc.Client` on BaseClient.

Future versions may include: bots, server parser, server-to-server connections, ….

**DO NOT USE, it's all moving parts and they'll move and shuffle and move for a long time before being a bit stable!**

### Supported features

The eventual goal is to support most of the modern IRC specifications.

The parser supports the following capabs: `message-tags`, `multi-prefix`, `account-tag`, `server-time`.

The connection supports the following: `sasl`, `sts`, `cap-notify`, `batch`.

The client has modules for the following: `account-notify`, `away-notify`, `userhost-in-names`, `chghost`,
`invite-notify`, `extended-join`; and `labeled-response` - `echo-message`.

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `irc` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:irc, "~> 0.1.0"}
  ]
end
```

Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at [https://hexdocs.pm/irc](https://hexdocs.pm/irc).