From ab2990f8506ed73889c45d34fd0ffa5643b57742 Mon Sep 17 00:00:00 2001 From: Mindiell Date: Tue, 5 Jul 2016 13:33:23 +0200 Subject: [PATCH] Added help message if bot is not op on the chan. --- messages.py | 9 +++++++++ wantzel.py | 40 +++++++++++++++++++++++++++++++++------- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/messages.py b/messages.py index 9a46d22..fb4f40c 100644 --- a/messages.py +++ b/messages.py @@ -97,4 +97,13 @@ messages = { "new_starter": """Afin d'éviter des commandes prises en compte par plusieurs bots, il est désormais fortement conseillé d'utiliser des commandes commençant par '~', merci.""", + + "please_op": + """%s j'ai besoin d'être op pour modifier le topic, ne m'oubliez pas s'il vous plait !""", + + "oped": + """Merci %s <3""", + + "deoped": + """Vilain %s )o;""", } diff --git a/wantzel.py b/wantzel.py index e3bbb6c..2a09557 100644 --- a/wantzel.py +++ b/wantzel.py @@ -4,13 +4,6 @@ Bot Wantzel from La Quadrature du Net. License : AGPLv3 Doc : https://wiki.laquadrature.net/Wantzel - -TODO: -- Ajouter des commandes permettant de gérer le mediakit (moderators only) - - Parser les urls et voir ce qu'on peut faire: - - upload de vidéo - - tag de vidéo - - obtenir un lien vers une vidéo """ import re @@ -180,6 +173,7 @@ class Wantzel(object): self.rp_to_twitter("http://www.laquadrature.net/fr/revue-de-presse/feed") self.rp_to_twitter("http://www.laquadrature.net/en/press-review/feed") self.count_articles() + self.op_verification() # Recalling the timer reactor.callLater(config.timer, self.timer) @@ -188,6 +182,38 @@ class Wantzel(object): This method set the methods to call for each callback received from IRC. """ self.irc.client.privmsg = self.on_privmsg + self.irc.client.irc_unknown = self.test_unknown + self.irc.client.modeChanged = self.mode_changed + + def test_unknown(self, prefix, command, params): + Utils.debug("UNKNOWN %s %s %s" % (prefix, command, params)) + if command=="RPL_NAMREPLY": + self.names(params) + + def op_verification(self): + """ + Verify if wantzel is chan operator, if not it complains on the chan <3. + """ + Utils.debug("op_verification method") + # On liste les utilisateurs du canal de la rp + self.irc.client.sendLine("NAMES #lqdn-rp") + + def mode_changed(self, user, channel, flag_set, modes, args): + Utils.debug("Mode changed : %s %s %s %s %s" % (user, channel, flag_set, modes, args)) + if "o" in modes: + # Cleaning user name + user = re.search("([^!]*)!", user).group(1) + if flag_set: + self.send_message(channel, messages["oped"] % user) + else: + self.send_message(channel, messages["deoped"] % user) + + def names(self, params): + Utils.debug("Names : %s" % params) + if params[2]=="#lqdn-rp": + ops = [user[1:] for user in params[3].split() if user[0]=="@"] + if "@"+self.irc.client.nickname not in params[3]: + self.send_message(params[2], messages["please_op"] % ", ".join(ops)) def send_message(self, channel, multiline_message): """ -- GitLab