Apply v3.3 changes on various modules
This commit is contained in:
parent
5afe5cb15a
commit
c6d5d88723
2
bot.py
2
bot.py
@ -353,7 +353,7 @@ class Bot:
|
|||||||
"""Treat a message before send"""
|
"""Treat a message before send"""
|
||||||
for h, lvl, store in self.create_cache("all_post"):
|
for h, lvl, store in self.create_cache("all_post"):
|
||||||
if h.is_matching(None, channel=res.channel, server=res.server):
|
if h.is_matching(None, channel=res.channel, server=res.server):
|
||||||
c = h.run(msg)
|
c = h.run(res)
|
||||||
self.check_rest_times(store, h)
|
self.check_rest_times(store, h)
|
||||||
if not c:
|
if not c:
|
||||||
return False
|
return False
|
||||||
|
6
hooks.py
6
hooks.py
@ -142,9 +142,9 @@ class Hook:
|
|||||||
return (channel is None or len(self.channels) <= 0 or
|
return (channel is None or len(self.channels) <= 0 or
|
||||||
channel in self.channels) and (server is None or
|
channel in self.channels) and (server is None or
|
||||||
self.server is None or self.server == server) and (
|
self.server is None or self.server == server) and (
|
||||||
(self.name is not None and strcmp == self.name) or (
|
(self.name is None or strcmp == self.name) or (
|
||||||
self.end is not None and strcmp == self.end) or (
|
self.end is None or strcmp == self.end) or (
|
||||||
self.regexp is not None and re.match(self.regexp, strcmp)))
|
self.regexp is None or re.match(self.regexp, strcmp)))
|
||||||
|
|
||||||
def run(self, msg, data2=None, strcmp=None):
|
def run(self, msg, data2=None, strcmp=None):
|
||||||
"""Run the hook"""
|
"""Run the hook"""
|
||||||
|
@ -9,17 +9,17 @@ import time
|
|||||||
import threading
|
import threading
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
nemubotversion = 3.2
|
nemubotversion = 3.3
|
||||||
|
|
||||||
from event import ModuleEvent
|
from event import ModuleEvent
|
||||||
from hooks import Hook
|
from hooks import Hook
|
||||||
|
|
||||||
def help_tiny ():
|
def help_tiny ():
|
||||||
"""Line inserted in the response to the command !help"""
|
"""Line inserted in the response to the command !help"""
|
||||||
return "events manager"
|
return "events manager"
|
||||||
|
|
||||||
def help_full ():
|
def help_full ():
|
||||||
return "This module store a lot of events: ny, we, vacs, " + (", ".join(DATAS.index.keys())) + "\n!eventslist: gets list of timer\n!start /something/: launch a timer"
|
return "This module store a lot of events: ny, we, vacs, " + (", ".join(DATAS.index.keys())) + "\n!eventslist: gets list of timer\n!start /something/: launch a timer"
|
||||||
|
|
||||||
CONTEXT = None
|
CONTEXT = None
|
||||||
|
|
||||||
@ -81,23 +81,23 @@ def cmd_vacances(msg):
|
|||||||
channel=msg.channel)
|
channel=msg.channel)
|
||||||
|
|
||||||
def start_countdown(msg):
|
def start_countdown(msg):
|
||||||
if msg.cmd[1] not in DATAS.index:
|
if msg.cmds[1] not in DATAS.index:
|
||||||
|
|
||||||
strnd = ModuleState("strend")
|
strnd = ModuleState("strend")
|
||||||
strnd["server"] = msg.srv.id
|
strnd["server"] = msg.server
|
||||||
strnd["channel"] = msg.channel
|
strnd["channel"] = msg.channel
|
||||||
strnd["proprio"] = msg.nick
|
strnd["proprio"] = msg.nick
|
||||||
strnd["sender"] = msg.sender
|
strnd["sender"] = msg.sender
|
||||||
strnd["start"] = datetime.now()
|
strnd["start"] = datetime.now()
|
||||||
strnd["name"] = msg.cmd[1]
|
strnd["name"] = msg.cmds[1]
|
||||||
DATAS.addChild(strnd)
|
DATAS.addChild(strnd)
|
||||||
|
|
||||||
evt = ModuleEvent(call=fini, call_data=dict(strend=strnd))
|
evt = ModuleEvent(call=fini, call_data=dict(strend=strnd))
|
||||||
|
|
||||||
if len(msg.cmd) > 2:
|
if len(msg.cmds) > 2:
|
||||||
result1 = re.findall("([0-9]+)([smhdjwSMHDJW])?", msg.cmd[2])
|
result1 = re.findall("([0-9]+)([smhdjwSMHDJW])?", msg.cmds[2])
|
||||||
result2 = re.match("([0-3]?[0-9])/([0-1]?[0-9])/((19|20)?[01239][0-9])", msg.cmd[2])
|
result2 = re.match("([0-3]?[0-9])/([0-1]?[0-9])/((19|20)?[01239][0-9])", msg.cmds[2])
|
||||||
result3 = re.match("([0-2]?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?", msg.cmd[2])
|
result3 = re.match("([0-2]?[0-9]):([0-5]?[0-9])(:([0-5]?[0-9]))?", msg.cmds[2])
|
||||||
if result2 is not None or result3 is not None:
|
if result2 is not None or result3 is not None:
|
||||||
try:
|
try:
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
@ -125,12 +125,12 @@ def start_countdown(msg):
|
|||||||
strnd["id"] = CONTEXT.add_event(evt)
|
strnd["id"] = CONTEXT.add_event(evt)
|
||||||
save()
|
save()
|
||||||
return Response(msg.sender, "%s commencé le %s et se terminera le %s." %
|
return Response(msg.sender, "%s commencé le %s et se terminera le %s." %
|
||||||
(msg.cmd[1], datetime.now().strftime("%A %d %B %Y a %H:%M:%S"),
|
(msg.cmds[1], datetime.now().strftime("%A %d %B %Y a %H:%M:%S"),
|
||||||
strnd.getDate("end").strftime("%A %d %B %Y a %H:%M:%S")))
|
strnd.getDate("end").strftime("%A %d %B %Y a %H:%M:%S")))
|
||||||
except:
|
except:
|
||||||
DATAS.delChild(strnd)
|
DATAS.delChild(strnd)
|
||||||
return Response(msg.sender,
|
return Response(msg.sender,
|
||||||
"Mauvais format de date pour l'evenement %s. Il n'a pas ete cree." % msg.cmd[1])
|
"Mauvais format de date pour l'evenement %s. Il n'a pas ete cree." % msg.cmds[1])
|
||||||
elif result1 is not None and len(result1) > 0:
|
elif result1 is not None and len(result1) > 0:
|
||||||
strnd["end"] = datetime.now()
|
strnd["end"] = datetime.now()
|
||||||
for (t, g) in result1:
|
for (t, g) in result1:
|
||||||
@ -148,43 +148,43 @@ def start_countdown(msg):
|
|||||||
strnd["id"] = CONTEXT.add_event(evt)
|
strnd["id"] = CONTEXT.add_event(evt)
|
||||||
save()
|
save()
|
||||||
return Response(msg.sender, "%s commencé le %s et se terminera le %s." %
|
return Response(msg.sender, "%s commencé le %s et se terminera le %s." %
|
||||||
(msg.cmd[1], datetime.now().strftime("%A %d %B %Y a %H:%M:%S"),
|
(msg.cmds[1], datetime.now().strftime("%A %d %B %Y a %H:%M:%S"),
|
||||||
strnd.getDate("end").strftime("%A %d %B %Y a %H:%M:%S")))
|
strnd.getDate("end").strftime("%A %d %B %Y a %H:%M:%S")))
|
||||||
save()
|
save()
|
||||||
return Response(msg.sender, "%s commencé le %s"% (msg.cmd[1],
|
return Response(msg.sender, "%s commencé le %s"% (msg.cmds[1],
|
||||||
datetime.now().strftime("%A %d %B %Y a %H:%M:%S")))
|
datetime.now().strftime("%A %d %B %Y a %H:%M:%S")))
|
||||||
else:
|
else:
|
||||||
return Response(msg.sender, "%s existe déjà."% (msg.cmd[1]))
|
return Response(msg.sender, "%s existe déjà."% (msg.cmds[1]))
|
||||||
|
|
||||||
def end_countdown(msg):
|
def end_countdown(msg):
|
||||||
if msg.cmd[1] in DATAS.index:
|
if msg.cmds[1] in DATAS.index:
|
||||||
res = Response(msg.sender,
|
res = Response(msg.sender,
|
||||||
"%s a duré %s." % (msg.cmd[1],
|
"%s a duré %s." % (msg.cmds[1],
|
||||||
msg.just_countdown(datetime.now () - DATAS.index[msg.cmd[1]].getDate("start"))),
|
msg.just_countdown(datetime.now () - DATAS.index[msg.cmds[1]].getDate("start"))),
|
||||||
channel=msg.channel)
|
channel=msg.channel)
|
||||||
if DATAS.index[msg.cmd[1]]["proprio"] == msg.nick or (msg.cmd[0] == "forceend" and msg.nick == msg.srv.owner):
|
if DATAS.index[msg.cmds[1]]["proprio"] == msg.nick or (msg.cmds[0] == "forceend" and msg.is_owner):
|
||||||
CONTEXT.del_event(DATAS.index[msg.cmd[1]]["id"])
|
CONTEXT.del_event(DATAS.index[msg.cmds[1]]["id"])
|
||||||
DATAS.delChild(DATAS.index[msg.cmd[1]])
|
DATAS.delChild(DATAS.index[msg.cmds[1]])
|
||||||
save()
|
save()
|
||||||
else:
|
else:
|
||||||
res.append_message("Vous ne pouvez pas terminer le compteur %s, créé par %s."% (msg.cmd[1], DATAS.index[msg.cmd[1]]["proprio"]))
|
res.append_message("Vous ne pouvez pas terminer le compteur %s, créé par %s."% (msg.cmds[1], DATAS.index[msg.cmds[1]]["proprio"]))
|
||||||
return res
|
return res
|
||||||
else:
|
else:
|
||||||
return Response(msg.sender, "%s n'est pas un compteur connu."% (msg.cmd[1]))
|
return Response(msg.sender, "%s n'est pas un compteur connu."% (msg.cmds[1]))
|
||||||
|
|
||||||
def liste(msg):
|
def liste(msg):
|
||||||
msg.send_snd ("Compteurs connus : %s." % ", ".join(DATAS.index.keys()))
|
msg.send_snd ("Compteurs connus : %s." % ", ".join(DATAS.index.keys()))
|
||||||
|
|
||||||
def parseanswer(msg):
|
def parseanswer(msg):
|
||||||
if msg.cmd[0] in DATAS.index:
|
if msg.cmds[0] in DATAS.index:
|
||||||
if DATAS.index[msg.cmd[0]].name == "strend":
|
if DATAS.index[msg.cmds[0]].name == "strend":
|
||||||
if DATAS.index[msg.cmd[0]].hasAttribute("end"):
|
if DATAS.index[msg.cmds[0]].hasAttribute("end"):
|
||||||
return Response(msg.sender, "%s commencé il y a %s et se terminera dans %s." % (msg.cmd[0], msg.just_countdown(datetime.now() - DATAS.index[msg.cmd[0]].getDate("start")), msg.just_countdown(DATAS.index[msg.cmd[0]].getDate("end") - datetime.now())), channel=msg.channel)
|
return Response(msg.sender, "%s commencé il y a %s et se terminera dans %s." % (msg.cmds[0], msg.just_countdown(datetime.now() - DATAS.index[msg.cmds[0]].getDate("start")), msg.just_countdown(DATAS.index[msg.cmds[0]].getDate("end") - datetime.now())), channel=msg.channel)
|
||||||
else:
|
else:
|
||||||
return Response(msg.sender, "%s commencé il y a %s." % (msg.cmd[0], msg.just_countdown(datetime.now () - DATAS.index[msg.cmd[0]].getDate("start"))), channel=msg.channel)
|
return Response(msg.sender, "%s commencé il y a %s." % (msg.cmds[0], msg.just_countdown(datetime.now () - DATAS.index[msg.cmds[0]].getDate("start"))), channel=msg.channel)
|
||||||
else:
|
else:
|
||||||
save()
|
save()
|
||||||
return Response(msg.sender, msg.countdown_format (DATAS.index[msg.cmd[0]].getDate("start"), DATAS.index[msg.cmd[0]]["msg_before"], DATAS.index[msg.cmd[0]]["msg_after"]), channel=msg.channel)
|
return Response(msg.sender, msg.countdown_format (DATAS.index[msg.cmds[0]].getDate("start"), DATAS.index[msg.cmds[0]]["msg_before"], DATAS.index[msg.cmds[0]]["msg_after"]), channel=msg.channel)
|
||||||
|
|
||||||
def parseask(msg):
|
def parseask(msg):
|
||||||
msgl = msg.content.lower()
|
msgl = msg.content.lower()
|
||||||
@ -206,7 +206,7 @@ def parseask(msg):
|
|||||||
|
|
||||||
if msg_before.find ("%s") != -1 and msg_after.find ("%s") != -1:
|
if msg_before.find ("%s") != -1 and msg_after.find ("%s") != -1:
|
||||||
evt = ModuleState("event")
|
evt = ModuleState("event")
|
||||||
evt["server"] = msg.srv.id
|
evt["server"] = msg.server
|
||||||
evt["channel"] = msg.channel
|
evt["channel"] = msg.channel
|
||||||
evt["proprio"] = msg.nick
|
evt["proprio"] = msg.nick
|
||||||
evt["sender"] = msg.sender
|
evt["sender"] = msg.sender
|
||||||
@ -226,7 +226,7 @@ def parseask(msg):
|
|||||||
" compte à rebours.")
|
" compte à rebours.")
|
||||||
elif texts is not None and texts.group (2) is not None:
|
elif texts is not None and texts.group (2) is not None:
|
||||||
evt = ModuleState("event")
|
evt = ModuleState("event")
|
||||||
evt["server"] = msg.srv.id
|
evt["server"] = msg.server
|
||||||
evt["channel"] = msg.channel
|
evt["channel"] = msg.channel
|
||||||
evt["proprio"] = msg.nick
|
evt["proprio"] = msg.nick
|
||||||
evt["sender"] = msg.sender
|
evt["sender"] = msg.sender
|
||||||
|
@ -5,14 +5,14 @@ import imp
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
nemubotversion = 3.2
|
nemubotversion = 3.3
|
||||||
|
|
||||||
def help_tiny ():
|
def help_tiny ():
|
||||||
"""Line inserted in the response to the command !help"""
|
"""Line inserted in the response to the command !help"""
|
||||||
return "as http://sleepyti.me/, give you the best time to go to bed"
|
return "as http://sleepyti.me/, give you the best time to go to bed"
|
||||||
|
|
||||||
def help_full ():
|
def help_full ():
|
||||||
return "TODO"
|
return "If you would like to sleep soon, use !sleepytime to know the best time to wake up; use !sleepytime hh:mm if you want to wake up at hh:mm"
|
||||||
|
|
||||||
def load(context):
|
def load(context):
|
||||||
from hooks import Hook
|
from hooks import Hook
|
||||||
@ -21,10 +21,10 @@ def load(context):
|
|||||||
|
|
||||||
|
|
||||||
def cmd_sleep(msg):
|
def cmd_sleep(msg):
|
||||||
if len (msg.cmd) > 1 and re.match("[0-9]{1,2}[h':.,-]([0-9]{1,2})?[m'\":.,-]?",
|
if len (msg.cmds) > 1 and re.match("[0-9]{1,2}[h':.,-]([0-9]{1,2})?[m'\":.,-]?",
|
||||||
msg.cmd[1]) is not None:
|
msg.cmds[1]) is not None:
|
||||||
# First, parse the hour
|
# First, parse the hour
|
||||||
p = re.match("([0-9]{1,2})[h':.,-]([0-9]{1,2})?[m':.,-]?", msg.cmd[1])
|
p = re.match("([0-9]{1,2})[h':.,-]([0-9]{1,2})?[m':.,-]?", msg.cmds[1])
|
||||||
f = [datetime(datetime.today().year,
|
f = [datetime(datetime.today().year,
|
||||||
datetime.today().month,
|
datetime.today().month,
|
||||||
datetime.today().day,
|
datetime.today().day,
|
||||||
|
@ -5,13 +5,13 @@ import re
|
|||||||
import socket
|
import socket
|
||||||
from urllib.parse import quote
|
from urllib.parse import quote
|
||||||
|
|
||||||
nemubotversion = 3.2
|
nemubotversion = 3.3
|
||||||
|
|
||||||
def help_tiny ():
|
def help_tiny ():
|
||||||
return "Find french synonyms"
|
return "Find french synonyms"
|
||||||
|
|
||||||
def help_full ():
|
def help_full ():
|
||||||
return "!syno <word> [<word> ...]: give a list of synonyms for each <word> (maximum 5 each time)."
|
return "!syno <word>: give a list of synonyms for <word>."
|
||||||
|
|
||||||
def load(context):
|
def load(context):
|
||||||
from hooks import Hook
|
from hooks import Hook
|
||||||
@ -20,18 +20,16 @@ def load(context):
|
|||||||
|
|
||||||
|
|
||||||
def cmd_syno(msg):
|
def cmd_syno(msg):
|
||||||
if 1 < len(msg.cmd) < 6:
|
if 1 < len(msg.cmds) < 6:
|
||||||
for word in msg.cmd[1:]:
|
for word in msg.cmds[1:]:
|
||||||
synos = get_synos(word)
|
synos = get_synos(word)
|
||||||
if synos is None:
|
if synos is None:
|
||||||
return Response(msg.sender,
|
return Response(msg.sender,
|
||||||
"Une erreur s'est produite durant la recherche"
|
"Une erreur s'est produite durant la recherche"
|
||||||
" d'un synonyme de %s" % word, msg.channel)
|
" d'un synonyme de %s" % word, msg.channel)
|
||||||
elif len(synos) > 0:
|
elif len(synos) > 0:
|
||||||
return Response(msg.sender,
|
return Response(msg.sender, synos, msg.channel,
|
||||||
"Synonymes de %s : %s" %
|
title="Synonymes de %s" % word)
|
||||||
(word, ', '.join(synos)),
|
|
||||||
msg.channel)
|
|
||||||
else:
|
else:
|
||||||
return Response(msg.sender,
|
return Response(msg.sender,
|
||||||
"Aucun synonymes de %s n'a été trouvé" % word,
|
"Aucun synonymes de %s n'a été trouvé" % word,
|
||||||
|
@ -12,7 +12,7 @@ from urllib.parse import unquote
|
|||||||
|
|
||||||
from .atom import Atom
|
from .atom import Atom
|
||||||
|
|
||||||
nemubotversion = 3.2
|
nemubotversion = 3.3
|
||||||
|
|
||||||
def help_tiny ():
|
def help_tiny ():
|
||||||
"""Line inserted in the response to the command !help"""
|
"""Line inserted in the response to the command !help"""
|
||||||
@ -21,12 +21,8 @@ def help_tiny ():
|
|||||||
def help_full ():
|
def help_full ():
|
||||||
return "This module is autonomous you can't interract with it."
|
return "This module is autonomous you can't interract with it."
|
||||||
|
|
||||||
CONTEXT = None
|
|
||||||
|
|
||||||
def load(context):
|
def load(context):
|
||||||
"""Register watched website"""
|
"""Register watched website"""
|
||||||
global CONTEXT
|
|
||||||
CONTEXT = context
|
|
||||||
for site in DATAS.getNodes("watch"):
|
for site in DATAS.getNodes("watch"):
|
||||||
start_watching(site)
|
start_watching(site)
|
||||||
|
|
||||||
@ -41,7 +37,7 @@ def start_watching(site):
|
|||||||
func_data=dict(s=site["server"], p=site["page"]),
|
func_data=dict(s=site["server"], p=site["page"]),
|
||||||
intervalle=site.getInt("time"),
|
intervalle=site.getInt("time"),
|
||||||
call=alert_change, call_data=site)
|
call=alert_change, call_data=site)
|
||||||
site["evt_id"] = CONTEXT.add_event(evt)
|
site["evt_id"] = add_event(evt)
|
||||||
|
|
||||||
|
|
||||||
def explore_url(url):
|
def explore_url(url):
|
||||||
@ -54,15 +50,15 @@ def found_site(s, p):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def del_site(msg):
|
def del_site(msg):
|
||||||
if len(msg.cmd) <= 1:
|
if len(msg.cmds) <= 1:
|
||||||
return Response(msg.sender, "quel site dois-je arrêter de surveiller ?",
|
return Response(msg.sender, "quel site dois-je arrêter de surveiller ?",
|
||||||
msg.channel, msg.nick)
|
msg.channel, msg.nick)
|
||||||
|
|
||||||
rx = explore_url(msg.cmd[1])
|
rx = explore_url(msg.cmds[1])
|
||||||
if rx is not None:
|
if rx is not None:
|
||||||
site = found_site(rx.group(2), rx.group(3))
|
site = found_site(rx.group(2), rx.group(3))
|
||||||
if site is not None and (msg.sender == site["sender"] or msg.is_owner):
|
if site is not None and (msg.sender == site["sender"] or msg.is_owner):
|
||||||
CONTEXT.del_event(site["evt_id"])
|
del_event(site["evt_id"])
|
||||||
DATAS.delChild(site)
|
DATAS.delChild(site)
|
||||||
save()
|
save()
|
||||||
return Response(msg.sender, "je ne surveille désormais plus cette URL.",
|
return Response(msg.sender, "je ne surveille désormais plus cette URL.",
|
||||||
@ -77,11 +73,11 @@ def del_site(msg):
|
|||||||
channel=msg.channel, nick=msg.nick)
|
channel=msg.channel, nick=msg.nick)
|
||||||
|
|
||||||
def add_site(msg):
|
def add_site(msg):
|
||||||
if len(msg.cmd) <= 1:
|
if len(msg.cmds) <= 1:
|
||||||
return Response(msg.sender, "quel site dois-je surveiller ?",
|
return Response(msg.sender, "quel site dois-je surveiller ?",
|
||||||
msg.channel, msg.nick)
|
msg.channel, msg.nick)
|
||||||
|
|
||||||
rx = explore_url(msg.cmd[1])
|
rx = explore_url(msg.cmds[1])
|
||||||
if rx is None:
|
if rx is None:
|
||||||
return Response(msg.sender, "je ne peux pas surveiller cette URL",
|
return Response(msg.sender, "je ne peux pas surveiller cette URL",
|
||||||
channel=msg.channel, nick=msg.nick)
|
channel=msg.channel, nick=msg.nick)
|
||||||
|
89
modules/ycc.py
Normal file
89
modules/ycc.py
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
# coding=utf-8
|
||||||
|
|
||||||
|
import http.client
|
||||||
|
import imp
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
nemubotversion = 3.3
|
||||||
|
|
||||||
|
def help_tiny ():
|
||||||
|
"""Line inserted in the response to the command !help"""
|
||||||
|
return "Gets YCC urls"
|
||||||
|
|
||||||
|
def help_full ():
|
||||||
|
return "!ycc [<url>]: with an argument, reduce the given <url> thanks to ycc.fr; without argument, reduce the last URL said on the current channel."
|
||||||
|
|
||||||
|
def load(context):
|
||||||
|
from hooks import Hook
|
||||||
|
add_hook("cmd_hook", Hook(cmd_ycc, "ycc"))
|
||||||
|
add_hook("all_post", Hook(parseresponse))
|
||||||
|
|
||||||
|
LAST_URLS = dict()
|
||||||
|
|
||||||
|
def gen_response(res, msg, srv):
|
||||||
|
if res is None:
|
||||||
|
return Response(msg.sender, "La situation est embarassante, il semblerait que YCC soit down :(", msg.channel)
|
||||||
|
elif isinstance(res, str):
|
||||||
|
return Response(msg.sender, "URL pour %s : %s" % (srv, res), msg.channel)
|
||||||
|
else:
|
||||||
|
return Response(msg.sender, "Mauvaise URL : %s" % srv, msg.channel)
|
||||||
|
|
||||||
|
def cmd_ycc(msg):
|
||||||
|
if len(msg.cmds) == 1:
|
||||||
|
global LAST_URLS
|
||||||
|
if msg.channel in LAST_URLS and len(LAST_URLS[msg.channel]) > 0:
|
||||||
|
msg.cmds.append(LAST_URLS[msg.channel].pop())
|
||||||
|
else:
|
||||||
|
return Response(msg.sender, "Je n'ai pas d'autre URL à réduire.", msg.channel)
|
||||||
|
|
||||||
|
if len(msg.cmds) < 6:
|
||||||
|
res = list()
|
||||||
|
for url in msg.cmds[1:]:
|
||||||
|
srv = re.match(".*((ht|f)tps?://|www.)([^/ ]+).*", url)
|
||||||
|
if srv is not None:
|
||||||
|
res.append(gen_response(tinyfy(url), msg, srv.group(3)))
|
||||||
|
else:
|
||||||
|
res.append(gen_response(False, msg, url))
|
||||||
|
return res
|
||||||
|
else:
|
||||||
|
return Response(msg.sender, "je ne peux pas réduire autant d'URL "
|
||||||
|
"d'un seul coup.", msg.channel, nick=msg.nick)
|
||||||
|
|
||||||
|
def parselisten(msg):
|
||||||
|
global LAST_URLS
|
||||||
|
res = re.match(".*(((ht|f)tps?://|www\.)[^ ]+).*", msg.content)
|
||||||
|
if res is not None:
|
||||||
|
if res.group(1).find("ycc.fr") >= 0:
|
||||||
|
return False
|
||||||
|
if msg.channel not in LAST_URLS:
|
||||||
|
LAST_URLS[msg.channel] = list()
|
||||||
|
LAST_URLS[msg.channel].append(res.group(1))
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
def parseresponse(res):
|
||||||
|
parselisten(res)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def tinyfy(url):
|
||||||
|
(status, page) = getPage("ycc.fr", "/redirection/create/" + url)
|
||||||
|
if status == http.client.OK and len(page) < 100:
|
||||||
|
return page.decode()
|
||||||
|
else:
|
||||||
|
print ("ERROR: ycc.fr seem down?")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def getPage(s, p):
|
||||||
|
conn = http.client.HTTPConnection(s, timeout=10)
|
||||||
|
try:
|
||||||
|
conn.request("GET", p)
|
||||||
|
except socket.gaierror:
|
||||||
|
print ("[%s] impossible de récupérer la page %s."%(s, p))
|
||||||
|
return None
|
||||||
|
|
||||||
|
res = conn.getresponse()
|
||||||
|
data = res.read()
|
||||||
|
|
||||||
|
conn.close()
|
||||||
|
return (res.status, data)
|
@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" ?>
|
|
||||||
<nemubotmodule name="ycc">
|
|
||||||
<message type="cmd" name="ycc" call="cmd_ycc" />
|
|
||||||
</nemubotmodule>
|
|
@ -1,37 +0,0 @@
|
|||||||
# coding=utf-8
|
|
||||||
|
|
||||||
import http.client
|
|
||||||
import threading
|
|
||||||
import re
|
|
||||||
|
|
||||||
class Tinyfier(threading.Thread):
|
|
||||||
def __init__(self, url, msg):
|
|
||||||
self.url = url
|
|
||||||
self.msg = msg
|
|
||||||
threading.Thread.__init__(self)
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
(status, page) = getPage("ycc.fr", "/redirection/create/" + self.url)
|
|
||||||
if status == http.client.OK and len(page) < 100:
|
|
||||||
srv = re.match(".*((ht|f)tps?://|www.)([^/ ]+).*", self.url)
|
|
||||||
if srv is None:
|
|
||||||
self.msg.srv.send_response(Response(self.msg.sender, "Mauvaise URL : %s" % (self.url), self.msg.channel), None)
|
|
||||||
else:
|
|
||||||
self.msg.srv.send_response(Response(self.msg.sender, "URL pour %s : %s" % (srv.group(3), page.decode()), self.msg.channel), None)
|
|
||||||
else:
|
|
||||||
print ("ERROR: ycc.fr seem down?")
|
|
||||||
self.msg.srv.send_response(Response(self.msg.sender, "La situation est embarassante, il semblerait que YCC soit down :(", self.msg.channel), None)
|
|
||||||
|
|
||||||
def getPage(s, p):
|
|
||||||
conn = http.client.HTTPConnection(s, timeout=10)
|
|
||||||
try:
|
|
||||||
conn.request("GET", p)
|
|
||||||
except socket.gaierror:
|
|
||||||
print ("[%s] impossible de récupérer la page %s."%(s, p))
|
|
||||||
return None
|
|
||||||
|
|
||||||
res = conn.getresponse()
|
|
||||||
data = res.read()
|
|
||||||
|
|
||||||
conn.close()
|
|
||||||
return (res.status, data)
|
|
@ -1,55 +0,0 @@
|
|||||||
# coding=utf-8
|
|
||||||
|
|
||||||
import http.client
|
|
||||||
import imp
|
|
||||||
import re
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from . import Tinyfier
|
|
||||||
|
|
||||||
nemubotversion = 3.2
|
|
||||||
|
|
||||||
def help_tiny ():
|
|
||||||
"""Line inserted in the response to the command !help"""
|
|
||||||
return "Gets YCC urls"
|
|
||||||
|
|
||||||
def help_full ():
|
|
||||||
return "!ycc [<url>]: with an argument, reduce the given <url> thanks to ycc.fr; without argument, reduce the last URL said on the current channel."
|
|
||||||
|
|
||||||
def load(context):
|
|
||||||
Tinyfier.Response = Response
|
|
||||||
|
|
||||||
def reload():
|
|
||||||
imp.reload(Tinyfier)
|
|
||||||
Tinyfier.Response = Response
|
|
||||||
|
|
||||||
def cmd_ycc(msg):
|
|
||||||
global LAST_URLS
|
|
||||||
if len(msg.cmd) == 1:
|
|
||||||
if msg.channel in LAST_URLS and len(LAST_URLS[msg.channel]) > 0:
|
|
||||||
url = LAST_URLS[msg.channel].pop()
|
|
||||||
t = Tinyfier.Tinyfier(url, msg)
|
|
||||||
t.start()
|
|
||||||
else:
|
|
||||||
return Response(msg.sender, "je n'ai pas d'autre URL à réduire", msg.channel, nick=msg.nick)
|
|
||||||
else:
|
|
||||||
if len(msg.cmd) < 6:
|
|
||||||
for url in msg.cmd[1:]:
|
|
||||||
t = Tinyfier.Tinyfier(url, msg)
|
|
||||||
t.start()
|
|
||||||
else:
|
|
||||||
return Response(msg.sender, "je ne peux pas réduire autant d'URL "
|
|
||||||
"d'un seul coup.", msg.channel, nick=msg.nick)
|
|
||||||
return False
|
|
||||||
|
|
||||||
LAST_URLS = dict()
|
|
||||||
|
|
||||||
def parselisten(msg):
|
|
||||||
global LAST_URLS
|
|
||||||
if re.match(".*(https?://|www\.)[^ ]+.*", msg.content) is not None:
|
|
||||||
res = re.match(".*(((ht|f)tps?://|www\.)[^ ]+).*", msg.content)
|
|
||||||
if msg.channel not in LAST_URLS:
|
|
||||||
LAST_URLS[msg.channel] = list()
|
|
||||||
LAST_URLS[msg.channel].append(res.group(1))
|
|
||||||
return True
|
|
||||||
return False
|
|
@ -39,6 +39,13 @@ class Response:
|
|||||||
self.set_sender(sender)
|
self.set_sender(sender)
|
||||||
self.count = count
|
self.count = count
|
||||||
|
|
||||||
|
@property
|
||||||
|
def content(self):
|
||||||
|
if self.title is not None:
|
||||||
|
return self.title + ", ".join(self.messages)
|
||||||
|
else:
|
||||||
|
return ", ".join(self.messages)
|
||||||
|
|
||||||
def set_sender(self, sender):
|
def set_sender(self, sender):
|
||||||
if sender is None or sender.find("!") < 0:
|
if sender is None or sender.find("!") < 0:
|
||||||
if sender is not None:
|
if sender is not None:
|
||||||
|
Loading…
Reference in New Issue
Block a user