From 6bcba1e8e4d35909a73791b23c3ec49734d06732 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Tue, 20 Oct 2015 03:09:33 +0200 Subject: [PATCH] =?utf8?q?M=C3=A9nage=20basique=20=C3=A0=20partir=20de=20S?= =?utf8?q?keleton?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- config.py | 22 ++++----- skeleton.py | 140 ++-------------------------------------------------- 2 files changed, 15 insertions(+), 147 deletions(-) diff --git a/config.py b/config.py index b7ca982..94c8c92 100644 --- a/config.py +++ b/config.py @@ -6,19 +6,19 @@ debug_stdout = True ### La config irc-related -irc_password = "Mot de passe à envoyer à NickServ pour s'authentifier" -irc_pseudo = "Pseudo" -ircname = "Ceci est l'ircname du bot" +irc_password = "HiddenInPlainSight" +irc_pseudo = "BBC" +ircname = "Come to #DW" #: Liste des chans à rejoindre -chanlist = ["#bot"] +chanlist = ["#bot"] # #DW #: Liste des chans que le bot ne quitte pas, même sur demande d'un leave de la part d'un OP -stay_channels = ["#bot"] +stay_channels = ["#bot"] # #DW #: Liste des chans sur lesquels le bot ne parle pas quiet_channels = [] ### Les logs #: fichier de log (``%s`` est remplacé par le nom du serveur) -logfile_template = "skeleton.%s.log" +logfile_template = "bbc.%s.log" ### Les ops #: Liste des OVEROPs (meilleurs que les OP ^^) @@ -27,7 +27,7 @@ overops = ["[20-100]"] ops = [] # config UTF8-fail -utf8_fail_answers = [u"Ceci est une réponse en cas de "] +utf8_fail_answers = [u"Have you tried to reverse the polarity of the encoding flow?"] #: Le bot râle-t-il en cas de non-utf8 ? utf8_trigger = True @@ -119,8 +119,8 @@ kick_answers = [u"Ceci est un message suite à /kick (Perpetré par {})"] kick_actions = [u"effectue une action suite à un /kick."] # config on m'a demandé de mourir/partir -quit_messages = [u"Ceci est un message de quit"] -leave_messages = [u"Ceci est un message de leave"] +quit_messages = [u"Geronimo!", u"Allons-y!", u"I don't wanna go!"] +leave_messages = quit_messages -quit_fail_messages = [u"Ceci est un message adressé à quelqu'un qui m'a demandé de quit alors qu'il n'en a pas le droit."] -leave_fail_messages = [u"Ceci est un message adressé à quelqu'un qui m'a demandé de leave alors qu'il n'en a pas le droit."] +quit_fail_messages = [u"Check your records again."] +leave_fail_messages = quit_fait_messages diff --git a/skeleton.py b/skeleton.py index 199b082..79d099c 100755 --- a/skeleton.py +++ b/skeleton.py @@ -22,10 +22,6 @@ def get_config_logfile(serveur): serveurs = {"acoeur.crans.org" : "acoeur", "irc.crans.org" : "crans"} return config.logfile_template % (serveurs[serveur]) -def get_filesize(): - """Récupère la taille de ce fichier.""" - return ex("ls -s %s" % (config.thisfile))[1].split()[0] - def log(serveur, channel, auteur=None, message=None): f = open(get_config_logfile(serveur), "a") if auteur == message == None: @@ -38,59 +34,6 @@ def log(serveur, channel, auteur=None, message=None): print chain f.close() -def is_something(chain, matches, avant=u".*(?:^| )", apres=u"(?:$|\.| |,|;).*", case_sensitive=False, debug=False): - if case_sensitive: - chain = unicode(chain, "utf8") - else: - chain = unicode(chain, "utf8").lower() - allmatches = "(" + "|".join(matches) + ")" - reg = (avant + allmatches + apres).lower() - o = re.match(reg, chain) - return o - -def is_insult(chain, debug=True): - return is_something(chain, config.insultes, avant=".*(?:^| |')") -def is_not_insult(chain): - chain = unicode(chain, "utf8") - insult_regexp = u"(" + u"|".join(config.insultes) + u")" - middle_regexp = u"(une? (?:(?:putain|enfoiré) d(?:e |'))*|)(?:| super )(?: (?:gros|petit|grand|énorme) |)" - reg = ".*pas %s%s.*" % (middle_regexp, insult_regexp) - if re.match(reg, chain): - return True - else: - return False -def is_compliment(chain, debug=True): - return is_something(chain, config.compliment_triggers, avant=".*(?:^| |')") -def is_tag(chain): - return is_something(chain, config.tag_triggers) -def is_tesla(chain): - return is_something(chain, config.tesla_triggers, avant=u"^", apres=u"$", debug=True) -def is_merci(chain): - return is_something(chain, config.merci_triggers) -def is_tamere(chain): - return is_something(chain, config.tamere_triggers) -def is_bad_action_trigger(chain, pseudo): - return is_something(chain, config.bad_action_triggers, avant=u"^", - apres="(?: [a-z]*ment)? %s($|\.| |,|;).*" % (pseudo)) -def is_good_action_trigger(chain, pseudo): - return is_something(chain, config.good_action_triggers, avant=u"^", - apres="(?: [a-z]*ment)? %s($|\.| |,|;).*" % (pseudo)) -def is_bonjour(chain): - return is_something(chain, config.bonjour_triggers, avant=u"^") -def is_bonne_nuit(chain): - return is_something(chain, config.bonne_nuit_triggers, avant=u"^") -def is_pan(chain): - return re.match(u"^(pan|bim|bang)( .*)?$", unicode(chain, "utf8").lower().strip()) - -def is_time(conf): - _, _, _, h, m, s, _, _, _ = time.localtime() - return (conf[0], 0, 0) < (h, m, s) < (conf[1], 0, 0) -def is_day(): - return is_time(config.daytime) -def is_night(): - return is_time(config.nighttime) - - class UnicodeBotError(Exception): pass def bot_unicode(chain): @@ -162,8 +105,6 @@ class Skeleton(ircbot.SingleServerIRCBot): Me rend silencieux sur le channel.""", None], "noquiet" : [None, """NOQUIET Me rend la parole sur le channel.""", None], - "lost" : [None, """LOST - Me fait perdre sur le channel.""", None], "say" : [None, None, """SAY Me fait parler sur le channel."""], "do" : [None, None, """DO @@ -374,67 +315,11 @@ class Skeleton(ircbot.SingleServerIRCBot): serv.nick(become) log(self.serveur, canal, auteur, message + "[successful]") - if cmd in ["meur", "meurt", "meurre", "meurres"] and not canal in self.quiet_channels: - serv.privmsg(canal, '%s: Mourir, impératif, 2ème personne du singulier : "meurs" (de rien)' % (auteur)) elif cmd in ["ping"] and not canal in self.quiet_channels: serv.privmsg(canal, "%s: pong" % (auteur)) - if is_insult(message) and not canal in self.quiet_channels: - if is_not_insult(message): - answer = random.choice(config.compliment_answers) - for ligne in answer.split("\n"): - serv.privmsg(canal, "%s: %s" % (auteur, ligne.encode("utf8"))) - else: - answer = random.choice(config.insultes_answers) - for ligne in answer.split("\n"): - serv.privmsg(canal, "%s: %s" % (auteur, ligne.encode("utf8"))) - elif is_compliment(message) and not canal in self.quiet_channels: - answer = random.choice(config.compliment_answers) - for ligne in answer.split("\n"): - serv.privmsg(canal, "%s: %s" % (auteur, ligne.encode("utf8"))) - if is_tesla(message) and not canal in self.quiet_channels: - l1, l2 = config.tesla_answers, config.tesla_actions - n1, n2 = len(l1), len(l2) - i = random.randrange(n1 + n2) - if i >= n1: - serv.action(canal, l2[i - n1].encode("utf8")) - else: - serv.privmsg(canal, "%s: %s" % (auteur, l1[i].encode("utf8"))) - if is_tamere(message) and not canal in self.quiet_channels: - answer = random.choice(config.tamere_answers) - for ligne in answer.split("\n"): - serv.privmsg(canal, "%s: %s" % (auteur, ligne.encode("utf8"))) - if is_tag(message) and not canal in self.quiet_channels: - if auteur in self.ops: - action = random.choice(config.tag_actions) - serv.action(canal, action.encode("utf8")) - self.quiet_channels.append(canal) - else: - answer = random.choice(config.tag_answers) - for ligne in answer.split("\n"): - serv.privmsg(canal, "%s: %s" % (auteur, ligne.encode("utf8"))) - if is_merci(message): - answer = random.choice(config.merci_answers) - for ligne in answer.split("\n"): - serv.privmsg(canal, "%s: %s" % (auteur, ligne.encode("utf8"))) - if is_bonjour(message) and not canal in self.quiet_channels: - if is_night(): - answer = random.choice(config.night_answers) - elif is_day(): - answer = random.choice(config.bonjour_answers) - else: - answer = random.choice(config.bonsoir_answers) - serv.privmsg(canal, answer.format(auteur).encode("utf8")) - if is_bonne_nuit(message) and not canal in self.quiet_channels: - answer = random.choice(config.bonne_nuit_answers) - serv.privmsg(canal, answer.format(auteur).encode("utf8")) else: if not canal in self.quiet_channels: - mypseudo = self.nick - if re.match((u"^(" + u"|".join(config.bonjour_triggers) - + ur")( {}| all| tout le monde| (à )?tous)(\.| ?!)?$" - ).format(mypseudo).lower(), message.decode("utf8").strip().lower()): - answer = random.choice(config.bonjour_answers) - serv.privmsg(canal, answer.format(auteur).encode("utf8")) + pass def on_action(self, serv, ev): action = ev.arguments()[0] @@ -448,23 +333,6 @@ class Skeleton(ircbot.SingleServerIRCBot): return mypseudo = self.nick - if is_bad_action_trigger(action, mypseudo) and not channel in self.quiet_channels: - l1, l2 = config.bad_action_answers, config.bad_action_actions - n1, n2 = len(l1), len(l2) - i = random.randrange(n1 + n2) - if i >= n1: - serv.action(channel, l2[i - n1].format(auteur).encode("utf8")) - else: - serv.privmsg(channel, l1[i].format(auteur).format(auteur).encode("utf8")) - if is_good_action_trigger(action, mypseudo) and not channel in self.quiet_channels: - l1, l2 = config.good_action_answers, config.good_action_actions - n1, n2 = len(l1), len(l2) - i = random.randrange(n1 + n2) - if i >= n1: - serv.action(channel, l2[i - n1].format(auteur).format(auteur).encode("utf8")) - else: - serv.privmsg(channel, l1[i].format(auteur).format(auteur).encode("utf8")) - def on_kick(self, serv, ev): auteur = irclib.nm_to_n(ev.source()) channel = ev.target() @@ -474,6 +342,7 @@ class Skeleton(ircbot.SingleServerIRCBot): log(self.serveur, "%s kické de %s par %s (raison : %s)" % (victime, channel, auteur, raison)) time.sleep(2) serv.join(channel) + return l1, l2 = config.kick_answers, config.kick_actions n1, n2 = len(l1), len(l2) i = random.randrange(n1 + n2) @@ -499,7 +368,7 @@ class Skeleton(ircbot.SingleServerIRCBot): if __name__ == "__main__": import sys if len(sys.argv) == 1: - print "Usage : skeleton.py [--debug]" + print "Usage : bbc.py [--debug]" exit(1) serveur = sys.argv[1] if "debug" in sys.argv or "--debug" in sys.argv: @@ -508,8 +377,7 @@ if __name__ == "__main__": debug = False if "--quiet" in sys.argv: config.debug_stdout = False - serveurs = {"a♡" : "acoeur.crans.org", "acoeur" : "acoeur.crans.org", "acoeur.crans.org" : "acoeur.crans.org", - "irc" : "irc.crans.org", "crans" : "irc.crans.org", "irc.crans.org" : "irc.crans.org"} + serveurs = {"irc" : "irc.crans.org", "crans" : "irc.crans.org", "irc.crans.org" : "irc.crans.org"} try: serveur = serveurs[serveur] except KeyError: -- 2.39.2