All pastes #2094790 Raw Edit

Someone

public text v1 · immutable
#2094790 ·published 2011-11-23 10:43 UTC
rendered paste body
#!/usr/bin/env python
# coding: utf-8

import xchat

# A modificar
# Para añadir un nuevo reason seguir el formato: "key" : "valor"
# dentro de los {}

reason = { "sexo"       : "Este canal no es un canal de temática sexual, pruebe en #sexo.",
           "spam"       : "No se permite el SpaM en este canal",
           "mayu"       :"No se permite el uso abusivo de mayúsculas, ya estabas avisado/a.",         
           "troll"      : "Su nick no se ajusta a las normas del canal. Cámbielo y podrá volver a entrar.",
           "ayuda"      : "Su búsqueda no se ajusta a las normas del canal.", 
           "mod"        :"Modere su comportamiento.",     
           "repe" : "No se permite el abuso de repeticiones.",
           "contactos"      : "Este no es un canal de contactos." } 
              

# Fin modificaciones

__module_autor__ = "chakal^-^"
__module_description__ = "Ban extendido. Banea con reason definidos con la posibilidad de desbanear en un tiempo."
__module_name__ = "BanExt"
__module_version__ = "1.0"

xchat.emit_print('Private Message to Dialog', __module_name__ , 'cargado.')
xchat.emit_print('Private Message to Dialog', __module_name__ , 'Comandos: /b y /nn.')
xchat.emit_print('Private Message to Dialog', __module_name__ , 'Ejemplo: /b nick reason 10.')

def GetHost(n):
	for user in xchat.get_list("users"):
		if user.nick == n:
			return user.host.split("@")[1]
	return None

def Ban_cb(word, word_eol, userdata):
	global reason
	nn = False
	if len(word) < 3:
		print "Sintaxis: /b|/nn NiCK reason [tban]]" % __module_name__
		return xchat.EAT_ALL
	nick = word[1]
	chan = xchat.get_info("channel")
	motivo = word[2].lower()
	if word[0].lower() == "b":
		host = GetHost(nick)
		if not host:
			print "El usuario %s no esta actualmente en %s" % (nick, chan)
			return xchat.EAT_ALL
	else:
		nn = True
	try:
		check = reason[motivo]
	except KeyError:
		show = ""
		for key in reason.keys():
			show += key+","
		print "Reason no encontrado, actuales reason: %s" % show.rstrip(",")
		return xchat.EAT_ALL
	if nn:
		xchat.command("mode %s +b %s!*@*" % (chan, nick))
		if word[-1].isdigit():
			tban = str(int(word[-1])*60)
			xchat.command("timer %s mode %s -b %s!*@*" % (tban, chan, nick))
	else:
		xchat.command("mode %s +b *!*@%s" % (chan, host))
		if word[-1].isdigit():
			tban = str(int(word[-1])*60)
			xchat.command("timer %s mode %s -b *!*@%s" % (tban, chan, host))
	xchat.command("kick %s %s" % (nick, reason[motivo]))
	return xchat.EAT_ALL

def unload_cb(userdata):
	xchat.emit_print('Private Message to Dialog', __module_name__ , 'descargado.')

HOOK = xchat.hook_command("badnick", Ban_cb)
HOOK = xchat.hook_command("b", Ban_cb)
HOOKUNLOAD = xchat.hook_unload(unload_cb)