All pastes #959996 Raw Edit

Someone

public python v1 · immutable
#959996 ·published 2008-03-27 20:35 UTC
rendered paste body
#-*- coding: ISO-8859-1 -*-import randomimport socketfrom time import sleepfrom buffer import BufferControlfrom comandos import Comandosimport config''' admins logados '''admins = []ManterLoop  = TrueReconectar  = FalseDebug       = FalseTBufferCtrl = NonePluginGen   = Noneirc         = Nonedef raw(mensagem):    TBufferCtrl.AddMsg('%s\r\n' % mensagem)    for pl in PluginGen.get_plugins_by_cmd(Comandos.OUTPUT_MSG):        pl().__call__(['>>'] + mensagem.split())    if Debug:        print '>>',mensagem    def PrivMsg(Destino, Mensagem):    msg = Mensagem    while len(msg) > 0:        raw('PRIVMSG %s :%s' % (Destino, msg[:msg[430:].find(' ')+430].strip()))        msg = msg[msg[430:].find(' ')+430:]def quit():    global ManterLoop    ManterLoop = False    def get_help_cmds():    result = []    for pl in PluginGen.get_plugins():        plg = pl()        if plg.ShowHelp:            result.append(plg.Palavra)    return resultdef show_help_by_word(nick, palavra):    result = False    for pl in PluginGen.get_plugins():        plg = pl()        if plg.ShowHelp and (plg.Palavra == palavra):            result = True            if plg.Sintaxe != '':                   PrivMsg(nick, 'Sintaxe: ' + plg.Sintaxe)            if plg.Descricao != '':                 PrivMsg(nick, 'Descricao: ' + plg.Descricao)            if (plg.Versao != '') and (plg.Autor != ''):                PrivMsg(nick, 'Sobre: Plugin versao %s escrito por %s' % (plg.Versao, plg.Autor))    if not result:        PrivMsg(nick, 'Ahn?')def ProcessarMensagem(mensagem):    global mynick, ManterLoop, PluginGen    data = mensagem    datal = data.split()    ''' Chamar os plugins '''    for pl in PluginGen.get_plugins_by_cmd(Comandos.ALL_MSG):        pl().__call__(datal)      for pl in PluginGen.get_plugins_by_cmd(datal[1]):        pl().__call__(datal)        if data[0] == ':':        txt = ' '.join(datal[3:])[1:]        if datal[1] == Comandos.CMD_PRIVMSG:            nick = data[1:data.find('!')]            if (datal[2][0] != '#'):                ''' HELP '''                if txt == 'help':                    PrivMsg(nick, 'help <palavra do indice>')                    PrivMsg(nick, 'Indice: ' + ', '.join(get_help_cmds()))                elif txt.split()[0] == 'help':                    show_help_by_word(nick, txt[txt.find(' ')+1:])      else:        if datal[0] == Comandos.CMD_PING:            raw(Comandos.CMD_PONG + ' ' + data.split()[1])        ManterLoop = datal[0] != Comandos.CMD_ERROR        if not ManterLoop:            print data        def Loop():    global ManterLoop,irc,Reconectar    resto = ''    while ManterLoop:        try:            tudo = resto + irc.recv(128)        except socket.error, v:            print 'Erro: %s. Reconectando...' % v            ManterLoop = False            Reconectar = True                    resto = ''        while tudo.find('\r\n'):            data = tudo[:tudo.find('\r\n')]            if data.strip() == '':                break            fim = tudo.find('\r\n')            if fim == -1:                resto = tudo                tudo  = ''                break            else:                tudo = tudo[fim+2:]            if Debug:                print '<<',data            ProcessarMensagem(data) def Reconectar_():    global ManterLoop,Reconectar    ManterLoop = False    Reconectar = True    def Conectar(debug, Gerenciador):    global ManterLoop,TBufferCtrl,Debug,PluginGen,irc,Reconectar    Debug = debug    PluginGen = Gerenciador    Reconectar = False    ManterLoop = True     irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    irc.settimeout(200)    TBufferCtrl = BufferControl(irc, Reconectar_)    try:        print "Conectando..."        irc.connect((config.network, config.port))        print "Conectado."        TBufferCtrl.start()        raw('NICK ' + config.mynick)        raw('USER %s %s %s :%s' % (config.user, config.user, config.network, config.real_name))    except:        print "Erro ao conectar"        ManterLoop = False        if config.try_reconnect:            print "Tentando reconectar em %d segundos..." % config.reconnect_delay            sleep(config.reconnect_delay)            return True    Loop()    TBufferCtrl.stop()    irc.close()    return Reconectar