diff --git a/messages.py b/messages.py index 9a46d2262b9fe633bc949ab072a973018c2e30d5..fb4f40c8167bd238c58cc696f9d99a030c028106 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 e3bbb6cab80e3fde815879a6a99e06207085f519..2a09557bb6119999d20990a4b09ffa284414cbfd 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): """