Internet Relay Chat: Difference between revisions

From XPUB & Lens-Based wiki
No edit summary
Line 66: Line 66:


Download this http://pypi.python.org/pypi/irc
Download this http://pypi.python.org/pypi/irc
<source lang="python">
#! /usr/bin/env python
"""
HelloBot
"""
import irc.bot
from time import sleep
class Bot (irc.bot.SingleServerIRCBot):
    def __init__(self, server, channel, nickname, port=6667):
        irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], nickname, nickname)
        self.channel = channel
    def on_nicknameinuse(self, c, e):
        c.nick(c.get_nickname() + "_")
    def on_welcome(self, c, e):
        c.join(self.channel)
    def on_privmsg(self, c, e):
        sleep(2)
        c.privmsg(e.source.nick, "I don't speak privately")
        # self.do_command(e, e.arguments[0])
    def on_pubmsg(self, c, e):
        msg = e.arguments[0]
        print msg
        sleep(2)
        c.privmsg(self.channel, "you said:" + msg)
        # c.privmsg(e.source.nick, "EEEE")
#############################################
# Standard code to start the bot
#############################################
def main():
    import sys
    if not len(sys.argv) >= 3 :
        print "Usage: testbot server[:port] channel nickname"
        sys.exit(1)
    s = sys.argv[1].split(":", 1)
    server = s[0]
    if len(s) == 2:
        try:
            port = int(s[1])
        except ValueError:
            print "Error: Erroneous port."
            sys.exit(1)
    else:
        port = 6667
    channel = sys.argv[2]
    nickname = sys.argv[3]
    bot = Bot(server, channel, nickname, port)
    bot.start()
if __name__ == "__main__":
    main()
</source>

Revision as of 16:50, 8 January 2013

wikipedia:Internet Relay Chat

Servers

As free software, anyone can download and run IRC server. In addition, there are many public IRC servers where you can create your own channels.

Public IRC: http://quakenet.org, http://freenode.net

Clients

IRC Clients

  • Pidgin

Browser Plugins

Web IRC Interfaces

  • [Kiwi IRC] a free javascript/web based IRC client
<Derp>   _____ _____ ______ _______   ________          __     _____ _______ 
<Derp>  |  __ \_   _|  ____|__   __| |___  /\ \        / /\   |  __ \__   __|
<Derp>  | |__) || | | |__     | |       / /  \ \  /\  / /  \  | |__) | | |   
<Derp>  |  ___/ | | |  __|    | |      / /    \ \/  \/ / /\ \ |  _  /  | |   
<Derp>  | |    _| |_| |____   | |     / /__    \  /\  / ____ \| | \ \  | |   
<Derp>  |_|   |_____|______|  |_|    /_____|    \/  \/_/    \_\_|  \_\ |_|   
<Derp>  __ ___ ___ ___   __          _  __ ___ 
<Derp>  )_) )  )_   )     / \  X  / /_) )_) )  
<Derp> /  _(_ (__  (     /_  \/ \/ / / / \ (   

<Derp> o--o  o-O-o o--o o-O-o     o---o o       o   O  o--o  o-O-o 
<Derp> |   |   |   |      |          /  |       |  / \ |   |   |   
<Derp> O--o    |   O-o    |        -O-  o   o   o o---oO-Oo    |   
<Derp> |       |   |      |        /     \ / \ /  |   ||  \    |   
<mennomarlon> ..
<Derp> o     o-O-o o--o   o       o---o   o   o   o   oo   o   o   
<source>

== Using in python ==

* [http://pypi.python.org/pypi/irc irc] library for python

=== Creating a bot in python ===
<source lang="python">
...

ASCII Art Inspirations

<joak> ok
<DerKaizer>                       o         _        _            _
<DerKaizer>            _o        /\_      _ \\o     (_)\__/o     (_)
<DerKaizer>          _< \_      _>(_)    (_)/<_       \_| \      _|/' \/
<DerKaizer>         (_)>(_)    (_)           (_)      (_)       (_)'  _\o_
<Derp>  ▄██████████████▄▐█▄▄▄▄█▌
<Derp> ██████▌▄▌▄▐▐▌███▌▀▀██▀▀
<Derp> ████▄█▌▄▌▄▐▐▌▀███▄▄█▌
<Derp> ▄▄▄▄▄██████████████▀

Programming an IRC bot in Python

Download this http://pypi.python.org/pypi/irc

#! /usr/bin/env python

"""
HelloBot
"""

import irc.bot
from time import sleep

class Bot (irc.bot.SingleServerIRCBot):
    def __init__(self, server, channel, nickname, port=6667):
        irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], nickname, nickname)
        self.channel = channel

    def on_nicknameinuse(self, c, e):
        c.nick(c.get_nickname() + "_")

    def on_welcome(self, c, e):
        c.join(self.channel)

    def on_privmsg(self, c, e):
        sleep(2)
        c.privmsg(e.source.nick, "I don't speak privately")
        # self.do_command(e, e.arguments[0])

    def on_pubmsg(self, c, e):
        msg = e.arguments[0]
        print msg
        sleep(2)
        c.privmsg(self.channel, "you said:" + msg)
        # c.privmsg(e.source.nick, "EEEE")

#############################################
# Standard code to start the bot
#############################################

def main():
    import sys
    if not len(sys.argv) >= 3 :
        print "Usage: testbot server[:port] channel nickname"
        sys.exit(1)

    s = sys.argv[1].split(":", 1)
    server = s[0]
    if len(s) == 2:
        try:
            port = int(s[1])
        except ValueError:
            print "Error: Erroneous port."
            sys.exit(1)
    else:
        port = 6667

    channel = sys.argv[2]

    nickname = sys.argv[3]
    bot = Bot(server, channel, nickname, port)
    bot.start()

if __name__ == "__main__":
    main()