Skip to content

mazenharake/eirc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

================================================================================
                   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!

6) Reconnect or... shutdown the client
   > eirc:stop_client(mybot).
   Bot terminating shutdown...
   ok