rendered paste bodyimport irclib
import string
import os
import urllib
from sgmllib import SGMLParser
import commands
import sys
import anydbm
port=6667
bot_nick="KillerSting"
canal="#bsd.mx"
archivo_db = "/root/ububotdb"
donos = [ "Diego_Rocha" ]
prefix = "@"
"""Classe sets para poder bloquear funcoes"""
class sets:
_set = ["True", "False"]
cumprimento = _set[0]
add = _set[0]
quiet = _set[1]
my_sets = sets()
"""fim da Classe"""
"""Classe my_data_base cria o banco de dados"""
class my_data_base:
def add_new(self, cmd, valor, connection, event, nick):
db = anydbm.open( archivo_db, "c")
db[str(cmd.strip())]=str(valor.strip())
if db.get(str(cmd).strip()):
connection.privmsg(canal, "["+nick+"]::["+cmd+" adicionado con sucesso]")
else:
connection.privmsg(canal, "["+nick+"]::[Sintaxe invalida]")
db.close()
def list_keys(self, connection, event, nick):
if os.path.exists(archivo_db):
db = anydbm.open( archivo_db, "r")
if len(db.keys())< 1:
connection.privmsg(canal, "["+nick+"][Base de Datos]::[vazia]")
pass
else:
data=db.keys()
keis=", ".join(data)
connection.privmsg(canal, "["+nick+"][keys]::["+keis+"]")
db.close()
else:
pass
def delete_msg_db(self, comando, cont, connection, event, nick):
db = anydbm.open( archivo_db, "c")
if db.get(str(cont).strip()):
del db[cont]
if db.get(str(cont).strip()):
connection.privmsg(canal, "["+nick+"]::[Error "+cont+" no deletado]" )
else:
connection.privmsg(canal, "["+nick+"]::[Sucesso " +cont+" deletado]" )
else:
connection.privmsg(canal, "["+nick+"]::[Entrada no existe]")
db.close()
def define_proc(self, comando, cont, connection, event, nick):
db = anydbm.open( archivo_db, "r")
if len(cont) < 1:
pass
else:
if db.has_key(str(cont).strip()) == 1 and len(cont) > 0:
connection.privmsg(canal, nick+", "+db.get(str(cont).strip()))
db.close()
my_db = my_data_base()
"""fim da Classe do banco da dados"""
""" join_handl verifica as entradas no canal """
def join_handl(connection, event):
source = event.source()
nicks = source.split("!")
if nicks[0] != bot_nick:
if my_sets.cumprimento == "True":
connection.privmsg(canal,"hola, "+nicks[0])
else:
pass
""" sai_priv verifica a saida do canal """
def sai_priv(connection, event):
text=join(event.arguments())
connection.privmsg(canal, text)
def away_handl(connection, event):
source = event.source()
nicks=source.split("!")
nick=nicks[0]
text=' '.join(event.arguments())
data=text.split()
comando=str(data[0])
cont=str(" ".join(data[1:]))
try:
if my_sets.quiet == "False":
if comando.strip().find(prefix) == 0:
cmd = comando.split(prefix)
if cmd[1] == "say":
connection.privmsg(canal, cont)
elif cmd[1] == "add":
if my_sets.add == "True":
try:
all_str = str(' '.join(data[1:]))
str__ = all_str.split( '=' )
if str__[0] and str__[1]:
cmd = str(str__[0])
valor = str(str__[1])
my_db.add_new( cmd, valor, connection, event, nick)
except IndexError:
pass
elif cmd[1] == "keys":
my_db.list_keys(connection, event, nick)
elif cmd[1] == "delete":
if nick in donos:
all_str_del = str(' '.join(data[1:]))
my_db.delete_msg_db(comando, all_str_del, connection, event, nick)
else:
connection.privmsg(canal, nick+", no tiene permissos para !delete")
elif cmd[1] =="google":
connection.privmsg(canal, "Preguntas 1 en google --> www.google.es/linux | www.google.com/linux")
elif cmd[1] == "math":
try:
calcula = data[1:]
res = 0
for i in range(len(calcula)):
if calcula[i] in ( '+', 'suma', 'add' ):
if res :
res = float(res) + float(calcula[ i + 1 ])
i = i + 1
else:
res = float(calcula[ i - 1 ]) + float(calcula[ i + 1 ])
i = i + 1
elif calcula[i] in ( '-', 'subtrai', 'minos' ):
if res :
res = float(res) - float(calcula[ i + 1 ])
i = i + 1
else:
res = float(calcula[ i - 1 ]) - float(calcula[ i + 1 ])
i = i + 1
elif calcula[i] in ( '*', 'mult' ):
if res :
res = float(res) * float(calcula[ i + 1 ])
i = i + 1
else:
res = float(calcula[ i - 1 ]) * float(calcula[ i + 1 ])
i = i + 1
elif calcula[i] in ( '/', 'div' ):
if res :
res = float(res) / float(calcula[ i + 1 ])
i = i + 1
else:
res = float(calcula[ i - 1 ]) / float(calcula[ i + 1 ])
i = i + 1
else:
pass
connection.privmsg(canal, nick+", "+str(res))
except ValueError:
connection.privmsg(canal, nick+", solo puede usar numeros :S")
elif cmd[1] == "quit":
if nick in donos:
server.quit( "Salindo....." )
sys.exit()
else:
connection.privmsg(canal, nick+", no tiene permissos para !quit")
elif cmd[1] == "paste":
connection.privmsg( canal, nick+", http://pastebin.ca | http://paste.ubuntu-nl.org/")
elif cmd[1] == "time":
connection.privmsg( canal, commands.getoutput("date"))
elif cmd[1] == "set":
if nick in donos:
if data[1] == "saludo_on":
my_sets.cumprimento = my_sets._set[0]
connection.privmsg( canal, nick+", saludo activado")
elif data[1] == "saludo_off":
my_sets.cumprimento = my_sets._set[1]
connection.privmsg( canal, nick+", saludo desactivado")
elif data[1] == "add_on":
my_sets.add = my_sets._set[0]
connection.privmsg( canal, nick+", add activado")
elif data[1] == "add_off":
my_sets.add = my_sets._set[1]
connection.privmsg( canal, nick+", add desactivado")
elif data[1] == "quiet_on":
my_sets.quiet = my_sets._set[0]
connection.privmsg( canal, nick+", quiet activado")
elif data[1] == "quiet_off":
my_sets.quiet = my_sets._set[1]
connection.privmsg( canal, nick+", quiet desactivado")
elif cmd[1] == "version":
try:
if data[1]:
res = str(connection.version(canal, str(data[1])))
connection.privmsg( canal, str(res)+' '+event)
except NameError:
pass
else:
connection.privmsg( canal, nick+", no tiene permissos para usar el !set")
else:
define_proc(comando, cmd[1], connection, event, nick)
elif comando.strip() in ( bot_nick, bot_nick+"," , bot_nick+":" ):
all_str__ = str(' '.join(data[1:]))
my_db.define_proc(comando, all_str__, connection, event, nick)
else:
pass
elif my_sets.quiet == "True":
if data[1] == "quiet_off":
my_sets.quiet = my_sets._set[1]
connection.privmsg( canal, nick+", quiet desactivado")
except (NameError, IndexError):
pass
if __name__ == "__main__":
irc = irclib.IRC()
server = irc.server()
server.connect("irc.freenode.net", port, bot_nick, "killersting", "killer")
server.join(canal)
server.privmsg("nickserv", "identify pinkfloyd")
server.add_global_handler("join", join_handl)
server.add_global_handler("privmsg", sai_priv)
server.add_global_handler("pubmsg", away_handl)
#server.add_global_handler("unaway" unaway_handl)
#server.add_fglobal_handler("part", part_handl)
irc.process_forever()