Commit c97afcd9 authored by Mindiell's avatar Mindiell

Issue #14: implementation of the 'status' command in order to retrieve status of a url.

parent 1c407ea5
......@@ -9,7 +9,7 @@ messages = {
"""Bonjour, je suis le bot de la Quadrature du Net, vous pouvez me demander de l'aide si besoin. (wantzel help)""",
"help":
"""Mes commandes sont : ~help ~rp(cpa) ~kill ~stats et ~admin.
"""Mes commandes sont : ~help ~rp(cpa) ~status ~kill ~stats et ~admin.
Pour plus d'informations, voir ici: https://wiki.laquadrature.net/Wantzel
Pour obtenir de l'aide sur une commande en particulier, il suffit de taper ~help <commande>""",
......@@ -21,6 +21,10 @@ messages = {
"""Cette commande sert à ajouter un article à la Revue de Presse (https://wiki.laquadrature.net/Revue_de_presse)
L'utilisation se fait sous la forme: ~rp <url de l'article à ajouter>""",
"help_status":
"""Cette commande sert à retrouver les informations concernant un article ajouté à la Revue de Presse (https://wiki.laquadrature.net/Revue_de_presse)
L'utilisation se fait sous la forme: ~status <url de l'article>""",
"help_stats":
"""Cette commande permet de fournir quelques statistiques sur la Revue de Presse (https://wiki.laquadrature.net/Revue_de_presse)
Les statistiques sont calculées sur des notes supérieurs ou égales à 0, 3, et 4. Et sur les 1, 3, 7, et 15 derniers jours.""",
......@@ -52,6 +56,9 @@ messages = {
"rp_taken_article":
"""Merci %s! Un point a été ajouté à cet article : il va être repris dans la revue de presse. D'ailleurs, que dirais-tu d'aider à choisir les extraits à publier sur #lqdn-rp ? <3""",
"status_unknown_article":
"""Désolé %s, l'url donnée n'existe pas dans la base de données.""",
"kill_none":
"""%s n'existe pas dans la base de données""",
......
......@@ -204,8 +204,10 @@ class Wantzel(object):
Returns a message about how to use the bot.
If a command is passed after help, the message explains how to use
the command.
- rp(acp)
- rp(acp) <url>
Add an article in the database
- status <url>
Retrieve some informations about an article in the database
- stats
Show some statistics about the RP
- kill (*)
......@@ -231,7 +233,7 @@ class Wantzel(object):
if "wantzel" in msg and ("help" in msg or "aide" in msg):
self.help(channel, msg)
# Find known command
command = re.search("[!~](rp[acp]*|kill|help|stats|admin)", msg)
command = re.search("[!~](rp[acp]*|status|kill|help|stats|admin)", msg)
Utils.debug("Command: %s" % command)
if command:
Utils.debug("group(0): %s" % command.group(0))
......@@ -242,6 +244,9 @@ class Wantzel(object):
if command.startswith("rp"):
Utils.debug("Calling self.rp")
self.rp(command, user, channel, msg)
if command.startswith("status"):
Utils.debug("Calling self.status")
self.status(command, user, channel, msg)
elif command == "help":
Utils.debug("Calling self.help")
self.help(channel, msg)
......@@ -266,7 +271,7 @@ class Wantzel(object):
"""
Utils.debug("help command")
# Searching for a command after help keyword
command = re.search("~help (help|rp|stats|kill|admin)", msg)
command = re.search("~help (help|rp|status|stats|kill|admin)", msg)
if command:
command = command.group(1)
self.send_message(channel, messages["help_"+command])
......@@ -325,6 +330,38 @@ class Wantzel(object):
# Update number of articles to do
self.count_articles()
def status(self, command, user, channel, msg):
"""
Retrieving status of the article in rp database.
"""
Utils.debug("rp command : %s" % command)
Utils.debug("rp user : %s" % user)
Utils.debug("rp channel : %s" % channel)
Utils.debug("rp msg : %s" % msg)
url = get_url(msg)
Utils.debug("url: %s" % url)
if not url:
return
# Looking for such an article in database
cursor = get_cursor()
cursor.execute("""
SELECT cite, published, nid, screenshot, fetched, seemscite, note
FROM presse
WHERE url = %s""", (url, ))
rows = cursor.fetchall()
if not rows:
self.send_message(channel, messages["status_unknown_article"] % user)
else:
message = "%s: note %s / " % (user, rows[0][6])
if rows[0][0] != "0":
message += "cite lqdn / "
if rows[0][1] == 1:
published = "publié (noeud %s) / " % rows[0][2]
else:
published = "non publié / "
self.send_message(channel, message[:-2])
def kill(self, user, channel, msg):
"""
Kill an article by setting its score to -100.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment