All pastes #946717 Raw Edit

Unnamed

public text v1 · immutable
·published 2008-03-17 21:47 UTC
rendered paste body
# -----------------------------------------------------------------
# Libraries.
# -----------------------------------------------------------------
import sys
import socket
import string
import time
import datetime

# -----------------------------------------------------------------
# Bot settings.
# -----------------------------------------------------------------
HOST  = 'irc.irc-hispano.org'         # Irc server.
PORT  =  6667                         # Irc port.
NICK  = 'BotNick'                     # Bot nickname.
IDENT = 'BotIdent'                    # Bot ident.
RNAME = 'BotName'                     # Bot realname.
OWNER = 'BotOwner'                    # Owner nick.
CHAN  = '#botchannel'                 # Default channel.

# -----------------------------------------------------------------
# Connection.
# -----------------------------------------------------------------
irc = socket.socket()
irc.connect((HOST,PORT))
irc.send("NICK %s\r\n" % NICK)
irc.send("USER %s %s bla :%s\r\n" % (IDENT,HOST,RNAME))

# -----------------------------------------------------------------
# Parse message.
# -----------------------------------------------------------------
def ircParse(msg):

    # Get command.
    cmd = string.join(msg[3:]).split(' ')
    cmd = cmd[0]

    # Get command sender.
    nick = msg[0].split('!') 
    nick = nick[0].split(':') 
    sender = nick[1]

    # Get command argv if exists.
    argv = ""
    if(len(msg) >= 5): 
        argv = msg[4]

    # Get channel where the command was called.
    channel = msg[2]

    # Commands.
    if cmd ==':.meop':      irc.send('MODE '  + channel +' +o '+ sender    + '\r\n')
    if cmd ==':.medeop':    irc.send('MODE '  + channel +' -o '+ sender    + '\r\n')
    if cmd ==':.mevoice':   irc.send('MODE '  + channel +' +v '+ sender    + '\r\n')
    if cmd ==':.medevoice': irc.send('MODE '  + channel +' -v '+ sender    + '\r\n')
    if cmd ==':.op':        irc.send('MODE '  + channel +' +o '+ argv  + '\r\n')
    if cmd ==':.deop':      irc.send('MODE '  + channel +' -o '+ argv  + '\r\n')
    if cmd ==':.voice':     irc.send('MODE '  + channel +' +v '+ argv  + '\r\n')
    if cmd ==':.devoice':   irc.send('MODE '  + channel +' -v '+ argv  + '\r\n')
    if cmd ==':.topic':     irc.send('TOPIC ' + channel +'    '+ argv  + '\r\n')


# -----------------------------------------------------------------
# Main loop.
# -----------------------------------------------------------------
loop = ""
while 1:
    loop = loop + irc.recv(1024)
    raw = string.split(loop, "\n")
    loop = raw.pop()

    for ircMessage in raw:
        ircMessage = string.split(string.rstrip(ircMessage))
        print ircMessage

        if(ircMessage[1]=='PRIVMSG'):
            ircParse(ircMessage)

        if(ircMessage[1]=='376'):
            irc.send('JOIN ' + CHAN + ' \r\n')

        if(ircMessage[0]=="PING"):
            irc.send("PONG %s\r\n" % ircMessage[1])
            print datetime.datetime.now() , " :: pong sent"