Eirc - An IRC client library for Erlang

June 11, 2017 ยท View on GitHub

================================================================================ Eirc - An IRC client library for Erlang

Eirc is an IRC client library which is useful if an Erlang application need to connect to an IRC server e.g. for a kind of notification system or similar. It aims to implement the full protocol specified in RFC2812 and all relevant parts in RFC1459.

== Contact == For feedback, comments and/or suggestions

Project: http://www.github.com/mazenharake/eirc Blog: http://mazenharake.wordpress.com IRC: #erlang @ freenode MailingList: http://www.erlang.org/faq.html

== License == Please see the LICENSE file

== Compiling == Just run make.

== Example == To run a client with a bot attached do the following:

  1. Compile $ make

  2. Open a shell E.g. (from the eirc root dir). $ erl -pa ../eirc/ebin

3a) In the Erlang shell type (formatting for clarity): > application:start(eirc). ok

> {ok, Client} = eirc:start_client(mybot, [{bots, [{example_bot, eirc_example_bot, []}]}]).
Initiating bot...
{ok,<0.39.0>}

3b) Another way of using using a bot is to install it > {ok, Client} = eirc:start_client(mybot, []). {ok,<0.39.0>}

> eirc:install_bot(mybot, example_bot, eirc_example_bot, []).
Initiating bot...
ok

4) Connect the client and interact and what not
> eirc:connect_and_logon(Client, "irc.freenode.net", 6667, "mazenharake"). Connected to "irc.freenode.net":6667 Logging in as "mazenharake" ok NOTICE ("zelazny.freenode.net"): ["*** Looking up your hostname..."] NOTICE ("zelazny.freenode.net"): ["*** Checking Ident"] NOTICE ("zelazny.freenode.net"): ["*** Found your hostname"] NOTICE ("zelazny.freenode.net"): ["*** No Ident response"] Login successful RAW: "001"; ["eircbot","Welcome to the freenode Internet Relay Chat Network eircbot"] ... MODE: "eircbot" sets "+i" on "eircbot" (parameters: [])

> eirc:join(Client, "#asecretchannel").
ok
JOIN: "eircbot" joined "#asecretchannel"
MODE: undefined sets "+ns" on "#asecretchannel" (parameters: [[]])
RAW: "353"; ["eircbot","@","#asecretchannel","@eircbot"]
RAW: "366"; ["eircbot","#asecretchannel","End of /NAMES list."]

JOIN: "mazenharake" joined "#asecretchannel"

TEXT: From ("mazenharake") To ("#asecretchannel") - "Hello Bot!"

5) Disconnect > eirc:quit(Client, "The end of the road..."). ok QUIT: "mazenharake" quit ("Client Quit") RAW: "ERROR"; ["Closing Link: c-0af670d5.012-10-67626721.cust.bredbandsbolaget.se (Client Quit)"] Connection closed!

  1. Reconnect or... shutdown the client

    eirc:stop_client(mybot). Bot terminating shutdown... ok