Convert modules to new importer
This commit is contained in:
parent
1f5364c387
commit
28005e5654
|
@ -7,6 +7,7 @@ import sys
|
|||
from datetime import datetime, timezone
|
||||
import shlex
|
||||
|
||||
from nemubot import context
|
||||
from nemubot.exception import IRCException
|
||||
from nemubot.hooks import hook
|
||||
from nemubot.message import TextMessage, Command
|
||||
|
@ -19,13 +20,12 @@ from more import Response
|
|||
|
||||
def load(context):
|
||||
"""Load this module"""
|
||||
global DATAS
|
||||
if not DATAS.hasNode("aliases"):
|
||||
DATAS.addChild(ModuleState("aliases"))
|
||||
DATAS.getNode("aliases").setIndex("alias")
|
||||
if not DATAS.hasNode("variables"):
|
||||
DATAS.addChild(ModuleState("variables"))
|
||||
DATAS.getNode("variables").setIndex("name")
|
||||
if not context.data.hasNode("aliases"):
|
||||
context.data.addChild(ModuleState("aliases"))
|
||||
context.data.getNode("aliases").setIndex("alias")
|
||||
if not context.data.hasNode("variables"):
|
||||
context.data.addChild(ModuleState("variables"))
|
||||
context.data.getNode("variables").setIndex("name")
|
||||
|
||||
|
||||
def help_full():
|
||||
|
@ -37,7 +37,7 @@ def set_variable(name, value, creator):
|
|||
var["name"] = name
|
||||
var["value"] = value
|
||||
var["creator"] = creator
|
||||
DATAS.getNode("variables").addChild(var)
|
||||
context.data.getNode("variables").addChild(var)
|
||||
|
||||
|
||||
def get_variable(name, msg=None):
|
||||
|
@ -47,8 +47,8 @@ def get_variable(name, msg=None):
|
|||
return msg.channel
|
||||
elif name == "date":
|
||||
return datetime.now(timezone.utc).strftime("%c")
|
||||
elif name in DATAS.getNode("variables").index:
|
||||
return DATAS.getNode("variables").index[name]["value"]
|
||||
elif name in context.data.getNode("variables").index:
|
||||
return context.data.getNode("variables").index[name]["value"]
|
||||
else:
|
||||
return ""
|
||||
|
||||
|
@ -59,7 +59,7 @@ def cmd_set(msg):
|
|||
set_variable(msg.cmds[1], " ".join(msg.cmds[2:]), msg.nick)
|
||||
res = Response("Variable \$%s définie." % msg.cmds[1],
|
||||
channel=msg.channel)
|
||||
save()
|
||||
context.save()
|
||||
return res
|
||||
return Response("!set prend au minimum deux arguments : "
|
||||
"le nom de la variable et sa valeur.",
|
||||
|
@ -71,7 +71,7 @@ def cmd_listalias(msg):
|
|||
if len(msg.cmds) > 1:
|
||||
res = list()
|
||||
for user in msg.cmds[1:]:
|
||||
als = [x["alias"] for x in DATAS.getNode("aliases").index.values() if x["creator"] == user]
|
||||
als = [x["alias"] for x in context.data.getNode("aliases").index.values() if x["creator"] == user]
|
||||
if len(als) > 0:
|
||||
res.append("Alias créés par %s : %s" % (user, ", ".join(als)))
|
||||
else:
|
||||
|
@ -79,7 +79,7 @@ def cmd_listalias(msg):
|
|||
return Response(" ; ".join(res), channel=msg.channel)
|
||||
else:
|
||||
return Response("Alias connus : %s." %
|
||||
", ".join(DATAS.getNode("aliases").index.keys()),
|
||||
", ".join(context.data.getNode("aliases").index.keys()),
|
||||
channel=msg.channel)
|
||||
|
||||
|
||||
|
@ -88,7 +88,7 @@ def cmd_listvars(msg):
|
|||
if len(msg.cmds) > 1:
|
||||
res = list()
|
||||
for user in msg.cmds[1:]:
|
||||
als = [x["alias"] for x in DATAS.getNode("variables").index.values() if x["creator"] == user]
|
||||
als = [x["alias"] for x in context.data.getNode("variables").index.values() if x["creator"] == user]
|
||||
if len(als) > 0:
|
||||
res.append("Variables créées par %s : %s" % (user, ", ".join(als)))
|
||||
else:
|
||||
|
@ -96,7 +96,7 @@ def cmd_listvars(msg):
|
|||
return Response(" ; ".join(res), channel=msg.channel)
|
||||
else:
|
||||
return Response("Variables connues : %s." %
|
||||
", ".join(DATAS.getNode("variables").index.keys()),
|
||||
", ".join(context.data.getNode("variables").index.keys()),
|
||||
channel=msg.channel)
|
||||
|
||||
|
||||
|
@ -107,9 +107,9 @@ def cmd_alias(msg):
|
|||
for alias in msg.cmds[1:]:
|
||||
if alias[0] == "!":
|
||||
alias = alias[1:]
|
||||
if alias in DATAS.getNode("aliases").index:
|
||||
if alias in context.data.getNode("aliases").index:
|
||||
res.append(Response("!%s correspond à %s" %
|
||||
(alias, DATAS.getNode("aliases").index[alias]["origin"]),
|
||||
(alias, context.data.getNode("aliases").index[alias]["origin"]),
|
||||
channel=msg.channel))
|
||||
else:
|
||||
res.append(Response("!%s n'est pas un alias" % alias,
|
||||
|
@ -127,9 +127,9 @@ def cmd_unalias(msg):
|
|||
for alias in msg.cmds[1:]:
|
||||
if alias[0] == "!" and len(alias) > 1:
|
||||
alias = alias[1:]
|
||||
if alias in DATAS.getNode("aliases").index:
|
||||
if DATAS.getNode("aliases").index[alias]["creator"] == msg.nick or msg.frm_owner:
|
||||
DATAS.getNode("aliases").delChild(DATAS.getNode("aliases").index[alias])
|
||||
if alias in context.data.getNode("aliases").index:
|
||||
if context.data.getNode("aliases").index[alias]["creator"] == msg.nick or msg.frm_owner:
|
||||
context.data.getNode("aliases").delChild(context.data.getNode("aliases").index[alias])
|
||||
res.append(Response("%s a bien été supprimé" % alias,
|
||||
channel=msg.channel))
|
||||
else:
|
||||
|
@ -167,8 +167,8 @@ def replace_variables(cnt, msg=None):
|
|||
|
||||
@hook("pre_Command")
|
||||
def treat_alias(msg):
|
||||
if msg.cmd in DATAS.getNode("aliases").index:
|
||||
txt = DATAS.getNode("aliases").index[msg.cmd]["origin"]
|
||||
if msg.cmd in context.data.getNode("aliases").index:
|
||||
txt = context.data.getNode("aliases").index[msg.cmd]["origin"]
|
||||
# TODO: for legacy compatibility
|
||||
if txt[0] == "!":
|
||||
txt = txt[1:]
|
||||
|
@ -190,16 +190,16 @@ def parseask(msg):
|
|||
global ALIAS
|
||||
if re.match(".*(set|cr[ée]{2}|nouvel(le)?) alias.*", msg.text) is not None:
|
||||
result = re.match(".*alias !?([^ ]+) (pour|=|:) (.+)$", msg.text)
|
||||
if result.group(1) in DATAS.getNode("aliases").index or result.group(3).find("alias") >= 0:
|
||||
if result.group(1) in context.data.getNode("aliases").index or result.group(3).find("alias") >= 0:
|
||||
raise IRCException("cet alias est déjà défini.")
|
||||
else:
|
||||
alias = ModuleState("alias")
|
||||
alias["alias"] = result.group(1)
|
||||
alias["origin"] = result.group(3)
|
||||
alias["creator"] = msg.nick
|
||||
DATAS.getNode("aliases").addChild(alias)
|
||||
context.data.getNode("aliases").addChild(alias)
|
||||
res = Response("Nouvel alias %s défini avec succès." %
|
||||
result.group(1), channel=msg.channel)
|
||||
save()
|
||||
context.save()
|
||||
return res
|
||||
return None
|
||||
|
|
|
@ -6,6 +6,7 @@ import re
|
|||
import sys
|
||||
from datetime import date, datetime
|
||||
|
||||
from nemubot import context
|
||||
from nemubot.exception import IRCException
|
||||
from nemubot.hooks import hook
|
||||
from nemubot.tools.countdown import countdown_format
|
||||
|
@ -18,8 +19,7 @@ from more import Response
|
|||
|
||||
|
||||
def load(context):
|
||||
global DATAS
|
||||
DATAS.setIndex("name", "birthday")
|
||||
context.data.setIndex("name", "birthday")
|
||||
|
||||
|
||||
def help_full():
|
||||
|
@ -38,10 +38,10 @@ def findName(msg):
|
|||
|
||||
matches = []
|
||||
|
||||
if name in DATAS.index:
|
||||
if name in context.data.index:
|
||||
matches.append(name)
|
||||
else:
|
||||
for k in DATAS.index.keys():
|
||||
for k in context.data.index.keys():
|
||||
if k.find(name) == 0:
|
||||
matches.append(k)
|
||||
return (matches, name)
|
||||
|
@ -52,13 +52,13 @@ def cmd_anniv(msg):
|
|||
(matches, name) = findName(msg)
|
||||
if len(matches) == 1:
|
||||
name = matches[0]
|
||||
tyd = DATAS.index[name].getDate("born")
|
||||
tyd = context.data.index[name].getDate("born")
|
||||
tyd = datetime(date.today().year, tyd.month, tyd.day)
|
||||
|
||||
if (tyd.day == datetime.today().day and
|
||||
tyd.month == datetime.today().month):
|
||||
return Response(countdown_format(
|
||||
DATAS.index[name].getDate("born"), "",
|
||||
context.data.index[name].getDate("born"), "",
|
||||
"C'est aujourd'hui l'anniversaire de %s !"
|
||||
" Il a %s. Joyeux anniversaire :)" % (name, "%s")),
|
||||
msg.channel)
|
||||
|
@ -81,7 +81,7 @@ def cmd_age(msg):
|
|||
(matches, name) = findName(msg)
|
||||
if len(matches) == 1:
|
||||
name = matches[0]
|
||||
d = DATAS.index[name].getDate("born")
|
||||
d = context.data.index[name].getDate("born")
|
||||
|
||||
return Response(countdown_format(d,
|
||||
"%s va naître dans %s." % (name, "%s"),
|
||||
|
@ -107,14 +107,14 @@ def parseask(msg):
|
|||
nick = res.group(1)
|
||||
if nick == "my" or nick == "I" or nick == "i" or nick == "je" or nick == "mon" or nick == "ma":
|
||||
nick = msg.nick
|
||||
if nick.lower() in DATAS.index:
|
||||
DATAS.index[nick.lower()]["born"] = extDate
|
||||
if nick.lower() in context.data.index:
|
||||
context.data.index[nick.lower()]["born"] = extDate
|
||||
else:
|
||||
ms = ModuleState("birthday")
|
||||
ms.setAttribute("name", nick.lower())
|
||||
ms.setAttribute("born", extDate)
|
||||
DATAS.addChild(ms)
|
||||
save()
|
||||
context.data.addChild(ms)
|
||||
context.save()
|
||||
return Response("ok, c'est noté, %s est né le %s"
|
||||
% (nick, extDate.strftime("%A %d %B %Y à %H:%M")),
|
||||
msg.channel,
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from nemubot import context
|
||||
from nemubot.event import ModuleEvent
|
||||
from nemubot.hooks import hook
|
||||
from nemubot.tools.countdown import countdown_format
|
||||
|
@ -17,7 +18,7 @@ yrn = datetime.now(timezone.utc).year + 1
|
|||
|
||||
|
||||
def load(context):
|
||||
if not CONF or not CONF.hasNode("sayon"):
|
||||
if not context.config or not context.config.hasNode("sayon"):
|
||||
print("You can append in your configuration some balise to "
|
||||
"automaticaly wish an happy new year on some channels like:\n"
|
||||
"<sayon hostid=\"nemubot@irc.freenode.net:6667\" "
|
||||
|
@ -26,19 +27,19 @@ def load(context):
|
|||
def bonneannee():
|
||||
txt = "Bonne année %d !" % yrn
|
||||
print(txt)
|
||||
if CONF and CONF.hasNode("sayon"):
|
||||
for sayon in CONF.getNodes("sayon"):
|
||||
if context.config and context.config.hasNode("sayon"):
|
||||
for sayon in context.config.getNodes("sayon"):
|
||||
if "hostid" not in sayon or "channel" not in sayon:
|
||||
print("Error: missing hostif or channel")
|
||||
continue
|
||||
srv = sayon["hostid"]
|
||||
chan = sayon["channel"]
|
||||
send_response(srv, Response(txt, chan))
|
||||
context.send_response(srv, Response(txt, chan))
|
||||
|
||||
d = datetime(yrn, 1, 1, 0, 0, 0, 0,
|
||||
timezone.utc) - datetime.now(timezone.utc)
|
||||
add_event(ModuleEvent(interval=0, offset=d.total_seconds(),
|
||||
call=bonneannee))
|
||||
context.add_event(ModuleEvent(interval=0, offset=d.total_seconds(),
|
||||
call=bonneannee))
|
||||
|
||||
|
||||
@hook("cmd_hook", "newyear")
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
import urllib
|
||||
|
||||
from nemubot import context
|
||||
from nemubot.exception import IRCException
|
||||
from nemubot.hooks import hook
|
||||
from nemubot.tools import web
|
||||
|
@ -14,7 +15,7 @@ from more import Response
|
|||
|
||||
|
||||
def load(context):
|
||||
if not CONF or not CONF.hasNode("goodreadsapi") or not CONF.getNode("goodreadsapi").hasAttribute("key"):
|
||||
if not context.config or not context.config.hasNode("goodreadsapi") or not context.config.getNode("goodreadsapi").hasAttribute("key"):
|
||||
print ("You need a Goodreads API key in order to use this "
|
||||
"module. Add it to the module configuration file:\n<goodreadsapi"
|
||||
" key=\"XXXXXXXXXXXXXXXX\" />\nGet one at "
|
||||
|
@ -25,7 +26,7 @@ def load(context):
|
|||
def get_book(title):
|
||||
"""Retrieve a book from its title"""
|
||||
response = web.getXML("https://www.goodreads.com/book/title.xml?key=%s&title=%s" %
|
||||
(CONF.getNode("goodreadsapi")["key"], urllib.parse.quote(title)))
|
||||
(context.config.getNode("goodreadsapi")["key"], urllib.parse.quote(title)))
|
||||
if response is not None and response.hasNode("book"):
|
||||
return response.getNode("book")
|
||||
else:
|
||||
|
@ -35,7 +36,7 @@ def get_book(title):
|
|||
def search_books(title):
|
||||
"""Get a list of book matching given title"""
|
||||
response = web.getXML("https://www.goodreads.com/search.xml?key=%s&q=%s" %
|
||||
(CONF.getNode("goodreadsapi")["key"], urllib.parse.quote(title)))
|
||||
(context.config.getNode("goodreadsapi")["key"], urllib.parse.quote(title)))
|
||||
if response is not None and response.hasNode("search"):
|
||||
return response.getNode("search").getNode("results").getNodes("work")
|
||||
else:
|
||||
|
@ -45,10 +46,10 @@ def search_books(title):
|
|||
def search_author(name):
|
||||
"""Looking for an author"""
|
||||
response = web.getXML("https://www.goodreads.com/api/author_url/%s?key=%s" %
|
||||
(urllib.parse.quote(name), CONF.getNode("goodreadsapi")["key"]))
|
||||
(urllib.parse.quote(name), context.config.getNode("goodreadsapi")["key"]))
|
||||
if response is not None and response.hasNode("author") and response.getNode("author").hasAttribute("id"):
|
||||
response = web.getXML("https://www.goodreads.com/author/show/%s.xml?key=%s" %
|
||||
(urllib.parse.quote(response.getNode("author")["id"]), CONF.getNode("goodreadsapi")["key"]))
|
||||
(urllib.parse.quote(response.getNode("author")["id"]), context.config.getNode("goodreadsapi")["key"]))
|
||||
if response is not None and response.hasNode("author"):
|
||||
return response.getNode("author")
|
||||
return None
|
||||
|
|
|
@ -44,7 +44,6 @@ def cmd_conjug(msg):
|
|||
"sa conjugaison!")
|
||||
|
||||
tens = ' '.join(msg.cmds[1:-1])
|
||||
print_debug(tens)
|
||||
|
||||
verb = msg.cmds[-1]
|
||||
|
||||
|
@ -60,7 +59,6 @@ def cmd_conjug(msg):
|
|||
def get_conjug(verb, stringTens):
|
||||
url = ("http://leconjugueur.lefigaro.fr/conjugaison/verbe/%s.html" %
|
||||
quote(verb.encode("ISO-8859-1")))
|
||||
print_debug(url)
|
||||
page = web.getURLContent(url)
|
||||
|
||||
if page is not None:
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import urllib.request
|
||||
from bs4 import BeautifulSoup
|
||||
import pprint
|
||||
from nemubot.hooks import hook
|
||||
from more import Response
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
import imp
|
||||
|
||||
from nemubot import context
|
||||
from nemubot.hooks import hook
|
||||
|
||||
nemubotversion = 3.4
|
||||
|
@ -15,8 +16,7 @@ from . import UrbanDictionnary
|
|||
from . import WFASearch
|
||||
|
||||
def load(context):
|
||||
global CONF
|
||||
WFASearch.CONF = CONF
|
||||
WFASearch.CONF = context.config
|
||||
|
||||
def reload():
|
||||
imp.reload(DDGSearch)
|
||||
|
|
|
@ -10,6 +10,7 @@ import time
|
|||
import threading
|
||||
import traceback
|
||||
|
||||
from nemubot import context
|
||||
from nemubot.exception import IRCException
|
||||
from nemubot.event import ModuleEvent
|
||||
from nemubot.hooks import hook
|
||||
|
@ -22,28 +23,25 @@ nemubotversion = 3.4
|
|||
from more import Response
|
||||
|
||||
def help_full ():
|
||||
return "This module store a lot of events: ny, we, " + (", ".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, " + (", ".join(context.datas.index.keys())) + "\n!eventslist: gets list of timer\n!start /something/: launch a timer"
|
||||
|
||||
def load(context):
|
||||
global DATAS
|
||||
#Define the index
|
||||
DATAS.setIndex("name")
|
||||
context.data.setIndex("name")
|
||||
|
||||
for evt in DATAS.index.keys():
|
||||
if DATAS.index[evt].hasAttribute("end"):
|
||||
event = ModuleEvent(call=fini, call_data=dict(strend=DATAS.index[evt]))
|
||||
if DATAS.index[evt]["server"] not in context.servers:
|
||||
print("WARNING: registering event for a unexistant server: %s, please connect to it." % DATAS.index[evt]["server"])
|
||||
event._end = DATAS.index[evt].getDate("end")
|
||||
idt = add_event(event)
|
||||
for evt in context.data.index.keys():
|
||||
if context.data.index[evt].hasAttribute("end"):
|
||||
event = ModuleEvent(call=fini, call_data=dict(strend=context.data.index[evt]))
|
||||
event._end = context.data.index[evt].getDate("end")
|
||||
idt = context.add_event(event)
|
||||
if idt is not None:
|
||||
DATAS.index[evt]["_id"] = idt
|
||||
context.data.index[evt]["_id"] = idt
|
||||
|
||||
|
||||
def fini(d, strend):
|
||||
send_response(strend["server"], Response("%s arrivé à échéance." % strend["name"], channel=strend["channel"], nick=strend["proprio"]))
|
||||
DATAS.delChild(DATAS.index[strend["name"]])
|
||||
save()
|
||||
context.send_response(strend["server"], Response("%s arrivé à échéance." % strend["name"], channel=strend["channel"], nick=strend["proprio"]))
|
||||
context.data.delChild(context.data.index[strend["name"]])
|
||||
context.save()
|
||||
|
||||
@hook("cmd_hook", "goûter")
|
||||
def cmd_gouter(msg):
|
||||
|
@ -68,7 +66,7 @@ def start_countdown(msg):
|
|||
"""!start /something/: launch a timer"""
|
||||
if len(msg.cmds) < 2:
|
||||
raise IRCException("indique le nom d'un événement à chronométrer")
|
||||
if msg.cmds[1] in DATAS.index:
|
||||
if msg.cmds[1] in context.data.index:
|
||||
raise IRCException("%s existe déjà." % msg.cmds[1])
|
||||
|
||||
strnd = ModuleState("strend")
|
||||
|
@ -77,7 +75,7 @@ def start_countdown(msg):
|
|||
strnd["proprio"] = msg.nick
|
||||
strnd["start"] = msg.date
|
||||
strnd["name"] = msg.cmds[1]
|
||||
DATAS.addChild(strnd)
|
||||
context.data.addChild(strnd)
|
||||
|
||||
evt = ModuleEvent(call=fini, call_data=dict(strend=strnd))
|
||||
|
||||
|
@ -106,9 +104,9 @@ def start_countdown(msg):
|
|||
else:
|
||||
strnd["end"] = datetime(now.year, now.month, now.day + 1, hou, minu, sec, timezone.utc)
|
||||
evt._end = strnd.getDate("end")
|
||||
strnd["_id"] = add_event(evt)
|
||||
strnd["_id"] = context.add_event(evt)
|
||||
except:
|
||||
DATAS.delChild(strnd)
|
||||
context.data.delChild(strnd)
|
||||
raise IRCException("Mauvais format de date pour l'événement %s. Il n'a pas été créé." % msg.cmds[1])
|
||||
|
||||
elif result1 is not None and len(result1) > 0:
|
||||
|
@ -127,11 +125,11 @@ def start_countdown(msg):
|
|||
else:
|
||||
strnd["end"] += timedelta(seconds=int(t))
|
||||
evt._end = strnd.getDate("end")
|
||||
eid = add_event(evt)
|
||||
eid = context.add_event(evt)
|
||||
if eid is not None:
|
||||
strnd["_id"] = eid
|
||||
|
||||
save()
|
||||
context.save()
|
||||
if "end" in strnd:
|
||||
return Response("%s commencé le %s et se terminera le %s." %
|
||||
(msg.cmds[1], msg.date.strftime("%A %d %B %Y à %H:%M:%S"),
|
||||
|
@ -148,16 +146,16 @@ def end_countdown(msg):
|
|||
if len(msg.cmds) < 2:
|
||||
raise IRCException("quel événement terminer ?")
|
||||
|
||||
if msg.cmds[1] in DATAS.index:
|
||||
if DATAS.index[msg.cmds[1]]["proprio"] == msg.nick or (msg.cmds[0] == "forceend" and msg.frm_owner):
|
||||
duration = countdown(msg.date - DATAS.index[msg.cmds[1]].getDate("start"))
|
||||
del_event(DATAS.index[msg.cmds[1]]["_id"])
|
||||
DATAS.delChild(DATAS.index[msg.cmds[1]])
|
||||
save()
|
||||
if msg.cmds[1] in context.data.index:
|
||||
if context.data.index[msg.cmds[1]]["proprio"] == msg.nick or (msg.cmds[0] == "forceend" and msg.frm_owner):
|
||||
duration = countdown(msg.date - context.data.index[msg.cmds[1]].getDate("start"))
|
||||
context.del_event(context.data.index[msg.cmds[1]]["_id"])
|
||||
context.data.delChild(context.data.index[msg.cmds[1]])
|
||||
context.save()
|
||||
return Response("%s a duré %s." % (msg.cmds[1], duration),
|
||||
channel=msg.channel, nick=msg.nick)
|
||||
else:
|
||||
raise IRCException("Vous ne pouvez pas terminer le compteur %s, créé par %s." % (msg.cmds[1], DATAS.index[msg.cmds[1]]["proprio"]))
|
||||
raise IRCException("Vous ne pouvez pas terminer le compteur %s, créé par %s." % (msg.cmds[1], context.data.index[msg.cmds[1]]["proprio"]))
|
||||
else:
|
||||
return Response("%s n'est pas un compteur connu."% (msg.cmds[1]), channel=msg.channel, nick=msg.nick)
|
||||
|
||||
|
@ -167,31 +165,31 @@ def liste(msg):
|
|||
if len(msg.cmds) > 1:
|
||||
res = list()
|
||||
for user in msg.cmds[1:]:
|
||||
cmptr = [x["name"] for x in DATAS.index.values() if x["proprio"] == user]
|
||||
cmptr = [x["name"] for x in context.data.index.values() if x["proprio"] == user]
|
||||
if len(cmptr) > 0:
|
||||
res.append("Compteurs créés par %s : %s" % (user, ", ".join(cmptr)))
|
||||
else:
|
||||
res.append("%s n'a pas créé de compteur" % user)
|
||||
return Response(" ; ".join(res), channel=msg.channel)
|
||||
else:
|
||||
return Response("Compteurs connus : %s." % ", ".join(DATAS.index.keys()), channel=msg.channel)
|
||||
return Response("Compteurs connus : %s." % ", ".join(context.data.index.keys()), channel=msg.channel)
|
||||
|
||||
@hook("cmd_default")
|
||||
def parseanswer(msg):
|
||||
if msg.cmds[0] in DATAS.index:
|
||||
if msg.cmds[0] in context.data.index:
|
||||
res = Response(channel=msg.channel)
|
||||
|
||||
# Avoid message starting by ! which can be interpreted as command by other bots
|
||||
if msg.cmds[0][0] == "!":
|
||||
res.nick = msg.nick
|
||||
|
||||
if DATAS.index[msg.cmds[0]].name == "strend":
|
||||
if DATAS.index[msg.cmds[0]].hasAttribute("end"):
|
||||
res.append_message("%s commencé il y a %s et se terminera dans %s." % (msg.cmds[0], countdown(msg.date - DATAS.index[msg.cmds[0]].getDate("start")), countdown(DATAS.index[msg.cmds[0]].getDate("end") - msg.date)))
|
||||
if context.data.index[msg.cmds[0]].name == "strend":
|
||||
if context.data.index[msg.cmds[0]].hasAttribute("end"):
|
||||
res.append_message("%s commencé il y a %s et se terminera dans %s." % (msg.cmds[0], countdown(msg.date - context.data.index[msg.cmds[0]].getDate("start")), countdown(context.data.index[msg.cmds[0]].getDate("end") - msg.date)))
|
||||
else:
|
||||
res.append_message("%s commencé il y a %s." % (msg.cmds[0], countdown(msg.date - DATAS.index[msg.cmds[0]].getDate("start"))))
|
||||
res.append_message("%s commencé il y a %s." % (msg.cmds[0], countdown(msg.date - context.data.index[msg.cmds[0]].getDate("start"))))
|
||||
else:
|
||||
res.append_message(countdown_format(DATAS.index[msg.cmds[0]].getDate("start"), DATAS.index[msg.cmds[0]]["msg_before"], DATAS.index[msg.cmds[0]]["msg_after"]))
|
||||
res.append_message(countdown_format(context.data.index[msg.cmds[0]].getDate("start"), context.data.index[msg.cmds[0]]["msg_before"], context.data.index[msg.cmds[0]]["msg_after"]))
|
||||
return res
|
||||
|
||||
RGXP_ask = re.compile(r"^.*((create|new)\s+(a|an|a\s*new|an\s*other)?\s*(events?|commande?)|(nouvel(le)?|ajoute|cr[ée]{1,3})\s+(un)?\s*([eé]v[ée]nements?|commande?)).*$", re.I)
|
||||
|
@ -202,7 +200,7 @@ def parseask(msg):
|
|||
name = re.match("^.*!([^ \"'@!]+).*$", msg.text)
|
||||
if name is None:
|
||||
raise IRCException("il faut que tu attribues une commande à l'événement.")
|
||||
if name.group(1) in DATAS.index:
|
||||
if name.group(1) in context.data.index:
|
||||
raise IRCException("un événement portant ce nom existe déjà.")
|
||||
|
||||
texts = re.match("^[^\"]*(avant|après|apres|before|after)?[^\"]*\"([^\"]+)\"[^\"]*((avant|après|apres|before|after)?.*\"([^\"]+)\".*)?$", msg.text, re.I)
|
||||
|
@ -231,8 +229,8 @@ def parseask(msg):
|
|||
evt["start"] = extDate
|
||||
evt["msg_after"] = msg_after
|
||||
evt["msg_before"] = msg_before
|
||||
DATAS.addChild(evt)
|
||||
save()
|
||||
context.data.addChild(evt)
|
||||
context.save()
|
||||
return Response("Nouvel événement !%s ajouté avec succès." % name.group(1),
|
||||
channel=msg.channel)
|
||||
|
||||
|
@ -243,8 +241,8 @@ def parseask(msg):
|
|||
evt["proprio"] = msg.nick
|
||||
evt["name"] = name.group(1)
|
||||
evt["msg_before"] = texts.group (2)
|
||||
DATAS.addChild(evt)
|
||||
save()
|
||||
context.data.addChild(evt)
|
||||
context.save()
|
||||
return Response("Nouvelle commande !%s ajoutée avec succès." % name.group(1),
|
||||
channel=msg.channel)
|
||||
|
||||
|
|
|
@ -34,8 +34,6 @@ def get_movie(title=None, year=None, imdbid=None, fullplot=True, tomatoes=False)
|
|||
if tomatoes:
|
||||
url += "tomatoes=true&"
|
||||
|
||||
print_debug(url)
|
||||
|
||||
# Make the request
|
||||
data = web.getJSON(url)
|
||||
|
||||
|
@ -55,7 +53,6 @@ def find_movies(title):
|
|||
|
||||
# Built URL
|
||||
url = "http://www.omdbapi.com/?s=%s" % urllib.parse.quote(title)
|
||||
print_debug(url)
|
||||
|
||||
# Make the request
|
||||
data = web.getJSON(url)
|
||||
|
|
|
@ -14,7 +14,7 @@ from more import Response
|
|||
|
||||
|
||||
def load(context):
|
||||
if not CONF or not CONF.hasNode("mapquestapi") or not CONF.getNode("mapquestapi").hasAttribute("key"):
|
||||
if not context.config or not context.config.hasNode("mapquestapi") or not context.config.getNode("mapquestapi").hasAttribute("key"):
|
||||
print ("You need a MapQuest API key in order to use this "
|
||||
"module. Add it to the module configuration file:\n<mapquestapi"
|
||||
" key=\"XXXXXXXXXXXXXXXX\" />\nRegister at "
|
||||
|
@ -22,7 +22,7 @@ def load(context):
|
|||
return None
|
||||
|
||||
from nemubot.hooks.messagehook import MessageHook
|
||||
add_hook("cmd_hook", MessageHook(cmd_geocode, "geocode"))
|
||||
context.add_hook("cmd_hook", MessageHook(cmd_geocode, "geocode"))
|
||||
|
||||
|
||||
def help_full():
|
||||
|
@ -31,7 +31,7 @@ def help_full():
|
|||
|
||||
def geocode(location):
|
||||
obj = web.getJSON("http://open.mapquestapi.com/geocoding/v1/address?key=%s&location=%s" %
|
||||
(CONF.getNode("mapquestapi")["key"], quote(location)))
|
||||
(context.config.getNode("mapquestapi")["key"], quote(location)))
|
||||
|
||||
if "results" in obj and "locations" in obj["results"][0]:
|
||||
for loc in obj["results"][0]["locations"]:
|
||||
|
|
|
@ -19,7 +19,6 @@ def get_namespaces(site, ssl=False):
|
|||
# Built URL
|
||||
url = "http%s://%s/w/api.php?format=json&action=query&meta=siteinfo&siprop=namespaces" % (
|
||||
"s" if ssl else "", site)
|
||||
print_debug(url)
|
||||
|
||||
# Make the request
|
||||
data = web.getJSON(url)
|
||||
|
@ -34,7 +33,6 @@ def get_raw_page(site, term, ssl=False):
|
|||
# Built URL
|
||||
url = "http%s://%s/w/api.php?format=json&redirects&action=query&prop=revisions&rvprop=content&titles=%s" % (
|
||||
"s" if ssl else "", site, urllib.parse.quote(term))
|
||||
print_debug(url)
|
||||
|
||||
# Make the request
|
||||
data = web.getJSON(url)
|
||||
|
@ -50,7 +48,6 @@ def get_unwikitextified(site, wikitext, ssl=False):
|
|||
# Built URL
|
||||
url = "http%s://%s/w/api.php?format=json&action=expandtemplates&text=%s" % (
|
||||
"s" if ssl else "", site, urllib.parse.quote(wikitext))
|
||||
print_debug(url)
|
||||
|
||||
# Make the request
|
||||
data = web.getJSON(url)
|
||||
|
@ -107,7 +104,6 @@ def opensearch(site, term, ssl=False):
|
|||
# Built URL
|
||||
url = "http%s://%s/w/api.php?format=xml&action=opensearch&search=%s" % (
|
||||
"s" if ssl else "", site, urllib.parse.quote(term))
|
||||
print_debug(url)
|
||||
|
||||
# Make the request
|
||||
response = web.getXML(url)
|
||||
|
@ -123,7 +119,6 @@ def search(site, term, ssl=False):
|
|||
# Built URL
|
||||
url = "http%s://%s/w/api.php?format=json&action=query&list=search&srsearch=%s&srprop=titlesnippet|snippet" % (
|
||||
"s" if ssl else "", site, urllib.parse.quote(term))
|
||||
print_debug(url)
|
||||
|
||||
# Make the request
|
||||
data = web.getJSON(url)
|
||||
|
|
|
@ -17,15 +17,14 @@ from . import whois
|
|||
|
||||
def load(context):
|
||||
for mod in [isup, page, w3c, watchWebsite, whois]:
|
||||
mod.add_event = add_event
|
||||
mod.del_event = del_event
|
||||
mod.save = save
|
||||
mod.add_event = context.add_event
|
||||
mod.del_event = context.del_event
|
||||
mod.save = context.save
|
||||
mod.print = print
|
||||
mod.print_debug = print_debug
|
||||
mod.send_response = send_response
|
||||
page.load(CONF, add_hook)
|
||||
watchWebsite.load(DATAS)
|
||||
whois.load(CONF, add_hook)
|
||||
mod.send_response = context.send_response
|
||||
page.load(context.config, context.add_hook)
|
||||
watchWebsite.load(context.data)
|
||||
whois.load(context.config, context.add_hook)
|
||||
|
||||
|
||||
def help_full():
|
||||
|
|
|
@ -185,7 +185,7 @@ def start_watching(site, offset=0):
|
|||
"""
|
||||
|
||||
o = urlparse(site["url"], "http")
|
||||
print_debug("Add %s event for site: %s" % (site["type"], o.netloc))
|
||||
#print_debug("Add %s event for site: %s" % (site["type"], o.netloc))
|
||||
|
||||
evt = ModuleEvent(func=lambda url: page.render(url, None),
|
||||
cmp_data=site["lastcontent"],
|
||||
|
|
|
@ -9,6 +9,7 @@ import urllib.error
|
|||
import urllib.request
|
||||
import urllib.parse
|
||||
|
||||
from nemubot import context
|
||||
from nemubot.exception import IRCException
|
||||
from nemubot.hooks import hook
|
||||
from nemubot.tools.xmlparser.node import ModuleState
|
||||
|
@ -18,8 +19,7 @@ nemubotversion = 3.4
|
|||
from more import Response
|
||||
|
||||
def load(context):
|
||||
global DATAS
|
||||
DATAS.setIndex("name", "phone")
|
||||
context.data.setIndex("name", "phone")
|
||||
|
||||
def help_full():
|
||||
return "!sms /who/[,/who/[,...]] message: send a SMS to /who/."
|
||||
|
@ -55,20 +55,20 @@ def cmd_sms(msg):
|
|||
# Check dests
|
||||
cur_epoch = time.mktime(time.localtime());
|
||||
for u in msg.cmds[1].split(","):
|
||||
if u not in DATAS.index:
|
||||
if u not in context.data.index:
|
||||
raise IRCException("Désolé, je sais pas comment envoyer de SMS à %s." % u)
|
||||
elif cur_epoch - float(DATAS.index[u]["lastuse"]) < 42:
|
||||
elif cur_epoch - float(context.data.index[u]["lastuse"]) < 42:
|
||||
raise IRCException("Un peu de calme, %s a déjà reçu un SMS il n'y a pas si longtemps." % u)
|
||||
|
||||
# Go!
|
||||
fails = list()
|
||||
for u in msg.cmds[1].split(","):
|
||||
DATAS.index[u]["lastuse"] = cur_epoch
|
||||
context.data.index[u]["lastuse"] = cur_epoch
|
||||
if msg.to_response[0] == msg.frm:
|
||||
frm = msg.frm
|
||||
else:
|
||||
frm = msg.frm + "@" + msg.to[0]
|
||||
test = send_sms(frm, DATAS.index[u]["user"], DATAS.index[u]["key"], " ".join(msg.cmds[2:]))
|
||||
test = send_sms(frm, context.data.index[u]["user"], context.data.index[u]["key"], " ".join(msg.cmds[2:]))
|
||||
if test is not None:
|
||||
fails.append( "%s: %s" % (u, test) )
|
||||
|
||||
|
@ -96,16 +96,16 @@ def parseask(msg):
|
|||
if test is not None:
|
||||
return Response("je n'ai pas pu enregistrer tes identifiants : %s" % test, msg.channel, msg.nick)
|
||||
|
||||
if msg.nick in DATAS.index:
|
||||
DATAS.index[msg.nick]["user"] = apiuser
|
||||
DATAS.index[msg.nick]["key"] = apikey
|
||||
if msg.nick in context.data.index:
|
||||
context.data.index[msg.nick]["user"] = apiuser
|
||||
context.data.index[msg.nick]["key"] = apikey
|
||||
else:
|
||||
ms = ModuleState("phone")
|
||||
ms.setAttribute("name", msg.nick)
|
||||
ms.setAttribute("user", apiuser)
|
||||
ms.setAttribute("key", apikey)
|
||||
ms.setAttribute("lastuse", 0)
|
||||
DATAS.addChild(ms)
|
||||
save()
|
||||
context.data.addChild(ms)
|
||||
context.save()
|
||||
return Response("ok, c'est noté. Je t'ai envoyé un SMS pour tester ;)",
|
||||
msg.channel, msg.nick)
|
||||
|
|
|
@ -20,12 +20,12 @@ SMILEY = list()
|
|||
CORRECTIONS = list()
|
||||
|
||||
def load(context):
|
||||
for smiley in CONF.getNodes("smiley"):
|
||||
for smiley in context.config.getNodes("smiley"):
|
||||
if smiley.hasAttribute("txt") and smiley.hasAttribute("mood"):
|
||||
SMILEY.append((smiley.getAttribute("txt"), smiley.getAttribute("mood")))
|
||||
print ("%d smileys loaded" % len(SMILEY))
|
||||
|
||||
for correct in CONF.getNodes("correction"):
|
||||
for correct in context.config.getNodes("correction"):
|
||||
if correct.hasAttribute("bad") and correct.hasAttribute("good"):
|
||||
CORRECTIONS.append((" " + (correct.getAttribute("bad") + " "), (" " + correct.getAttribute("good") + " ")))
|
||||
print ("%d corrections loaded" % len(CORRECTIONS))
|
||||
|
@ -38,7 +38,6 @@ class Speaker(Thread):
|
|||
while not queue.empty():
|
||||
sentence = queue.get_nowait()
|
||||
lang = "fr"
|
||||
print_debug(sentence)
|
||||
subprocess.call(["espeak", "-v", lang, "--", sentence])
|
||||
queue.task_done()
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
import re
|
||||
from urllib.parse import quote
|
||||
|
||||
from nemubot import context
|
||||
from nemubot.exception import IRCException
|
||||
from nemubot.hooks import hook
|
||||
from nemubot.tools.xmlparser.node import ModuleState
|
||||
|
@ -20,8 +21,7 @@ def help_full():
|
|||
return "!spell [<lang>] <word>: give the correct spelling of <word> in <lang=fr>."
|
||||
|
||||
def load(context):
|
||||
global DATAS
|
||||
DATAS.setIndex("name", "score")
|
||||
context.data.setIndex("name", "score")
|
||||
|
||||
@hook("cmd_hook", "spell")
|
||||
def cmd_spell(msg):
|
||||
|
@ -50,27 +50,25 @@ def cmd_spell(msg):
|
|||
return Response(strRes, channel=msg.channel, nick=msg.nick)
|
||||
|
||||
def add_score(nick, t):
|
||||
global DATAS
|
||||
if nick not in DATAS.index:
|
||||
if nick not in context.data.index:
|
||||
st = ModuleState("score")
|
||||
st["name"] = nick
|
||||
DATAS.addChild(st)
|
||||
context.data.addChild(st)
|
||||
|
||||
if DATAS.index[nick].hasAttribute(t):
|
||||
DATAS.index[nick][t] = DATAS.index[nick].getInt(t) + 1
|
||||
if context.data.index[nick].hasAttribute(t):
|
||||
context.data.index[nick][t] = context.data.index[nick].getInt(t) + 1
|
||||
else:
|
||||
DATAS.index[nick][t] = 1
|
||||
save()
|
||||
context.data.index[nick][t] = 1
|
||||
context.save()
|
||||
|
||||
@hook("cmd_hook", "spellscore")
|
||||
def cmd_score(msg):
|
||||
global DATAS
|
||||
res = list()
|
||||
unknown = list()
|
||||
if len(msg.cmds) > 1:
|
||||
for cmd in msg.cmds[1:]:
|
||||
if cmd in DATAS.index:
|
||||
res.append(Response("%s: %s" % (cmd, " ; ".join(["%s: %d" % (a, DATAS.index[cmd].getInt(a)) for a in DATAS.index[cmd].attributes.keys() if a != "name"])), channel=msg.channel))
|
||||
if cmd in context.data.index:
|
||||
res.append(Response("%s: %s" % (cmd, " ; ".join(["%s: %d" % (a, context.data.index[cmd].getInt(a)) for a in context.data.index[cmd].attributes.keys() if a != "name"])), channel=msg.channel))
|
||||
else:
|
||||
unknown.append(cmd)
|
||||
else:
|
||||
|
|
|
@ -21,18 +21,17 @@ def help_full():
|
|||
def load(context):
|
||||
global lang_binding
|
||||
|
||||
if not CONF or not CONF.hasNode("bighugelabs") or not CONF.getNode("bighugelabs").hasAttribute("key"):
|
||||
if not context.config or not context.config.hasNode("bighugelabs") or not context.config.getNode("bighugelabs").hasAttribute("key"):
|
||||
print ("You need a NigHugeLabs API key in order to have english "
|
||||
"theasorus. Add it to the module configuration file:\n<bighugelabs"
|
||||
" key=\"XXXXXXXXXXXXXXXX\" />\nRegister at "
|
||||
"https://words.bighugelabs.com/getkey.php")
|
||||
else:
|
||||
lang_binding["en"] = lambda word: get_english_synos(CONF.getNode("bighugelabs")["key"], word)
|
||||
lang_binding["en"] = lambda word: get_english_synos(context.config.getNode("bighugelabs")["key"], word)
|
||||
|
||||
|
||||
def get_french_synos(word):
|
||||
url = "http://www.crisco.unicaen.fr/des/synonymes/" + quote(word.encode("ISO-8859-1"))
|
||||
print_debug(url)
|
||||
page = web.getURLContent(url)
|
||||
|
||||
best = list(); synos = list(); anton = list()
|
||||
|
|
|
@ -15,16 +15,16 @@ URL_TPBAPI = None
|
|||
def load(context):
|
||||
global URL_TPBAPI
|
||||
|
||||
if not CONF or not CONF.hasNode("tpbapi") or not CONF.getNode("tpbapi").hasAttribute("url"):
|
||||
if not context.config or not context.config.hasNode("tpbapi") or not context.config.getNode("tpbapi").hasAttribute("url"):
|
||||
print ("You need a TPB API in order to use the !tpb feature. Add it to "
|
||||
"the module configuration file:\n"
|
||||
"<tpbapi url=\"http://tpbapi.org/\" />\nSample API: "
|
||||
"https://gist.github.com/colona/07a925f183cfb47d5f20")
|
||||
else:
|
||||
URL_TPBAPI = CONF.getNode("tpbapi")["url"]
|
||||
URL_TPBAPI = context.config.getNode("tpbapi")["url"]
|
||||
|
||||
from nemubot.hooks.messagehook import MessageHook
|
||||
add_hook("cmd_hook", MessageHook(cmd_tpb, "tpb"))
|
||||
context.add_hook("cmd_hook", MessageHook(cmd_tpb, "tpb"))
|
||||
|
||||
|
||||
def cmd_tpb(msg):
|
||||
|
|
|
@ -19,17 +19,17 @@ URL = "http://api.wordreference.com/0.8/%s/json/%%s%%s/%%s"
|
|||
|
||||
def load(context):
|
||||
global URL
|
||||
if not CONF or not CONF.hasNode("wrapi") or not CONF.getNode("wrapi").hasAttribute("key"):
|
||||
if not context.config or not context.config.hasNode("wrapi") or not context.config.getNode("wrapi").hasAttribute("key"):
|
||||
print ("You need a WordReference API key in order to use this module."
|
||||
" Add it to the module configuration file:\n<wrapi key=\"XXXXX\""
|
||||
" />\nRegister at "
|
||||
"http://www.wordreference.com/docs/APIregistration.aspx")
|
||||
return None
|
||||
else:
|
||||
URL = URL % CONF.getNode("wrapi")["key"]
|
||||
URL = URL % context.config.getNode("wrapi")["key"]
|
||||
|
||||
from nemubot.hooks.messagehook import MessageHook
|
||||
add_hook("cmd_hook", MessageHook(cmd_translate, "translate"))
|
||||
context.add_hook("cmd_hook", MessageHook(cmd_translate, "translate"))
|
||||
|
||||
|
||||
def help_full():
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
import re
|
||||
|
||||
from nemubot import context
|
||||
from nemubot.exception import IRCException
|
||||
from nemubot.hooks import hook
|
||||
from nemubot.tools import web
|
||||
|
@ -14,8 +15,7 @@ from more import Response
|
|||
|
||||
|
||||
def load(context):
|
||||
global DATAS
|
||||
DATAS.setIndex("name", "station")
|
||||
context.data.setIndex("name", "station")
|
||||
|
||||
# evt = ModuleEvent(station_available, "42706",
|
||||
# (lambda a, b: a != b), None, 60,
|
||||
|
@ -30,7 +30,7 @@ def help_full():
|
|||
|
||||
def station_status(station):
|
||||
"""Gets available and free status of a given station"""
|
||||
response = web.getXML(CONF.getNode("server")["url"] + station)
|
||||
response = web.getXML(context.config.getNode("server")["url"] + station)
|
||||
if response is not None:
|
||||
available = response.getNode("available").getContent()
|
||||
if available is not None and len(available) > 0:
|
||||
|
@ -72,7 +72,6 @@ def print_station_status(msg, station):
|
|||
@hook("cmd_hook", "velib")
|
||||
def ask_stations(msg):
|
||||
"""Hook entry from !velib"""
|
||||
global DATAS
|
||||
if len(msg.cmds) > 5:
|
||||
raise IRCException("demande-moi moins de stations à la fois.")
|
||||
|
||||
|
@ -80,9 +79,9 @@ def ask_stations(msg):
|
|||
for station in msg.cmds[1:]:
|
||||
if re.match("^[0-9]{4,5}$", station):
|
||||
return print_station_status(msg, station)
|
||||
elif station in DATAS.index:
|
||||
elif station in context.data.index:
|
||||
return print_station_status(msg,
|
||||
DATAS.index[station]["number"])
|
||||
context.data.index[station]["number"])
|
||||
else:
|
||||
raise IRCException("numéro de station invalide.")
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import datetime
|
|||
import re
|
||||
from urllib.parse import quote
|
||||
|
||||
from nemubot import context
|
||||
from nemubot.exception import IRCException
|
||||
from nemubot.hooks import hook
|
||||
from nemubot.tools import web
|
||||
|
@ -19,10 +20,9 @@ from more import Response
|
|||
|
||||
|
||||
def load(context):
|
||||
global DATAS
|
||||
DATAS.setIndex("name", "city")
|
||||
context.data.setIndex("name", "city")
|
||||
|
||||
if not CONF or not CONF.hasNode("darkskyapi") or not CONF.getNode("darkskyapi").hasAttribute("key"):
|
||||
if not context.config or not context.config.hasNode("darkskyapi") or not context.config.getNode("darkskyapi").hasAttribute("key"):
|
||||
print ("You need a Dark-Sky API key in order to use this "
|
||||
"module. Add it to the module configuration file:\n<darkskyapi"
|
||||
" key=\"XXXXXXXXXXXXXXXX\" />\nRegister at "
|
||||
|
@ -30,9 +30,9 @@ def load(context):
|
|||
return None
|
||||
|
||||
from nemubot.hooks.messagehook import MessageHook
|
||||
add_hook("cmd_hook", MessageHook(cmd_weather, "météo"))
|
||||
add_hook("cmd_hook", MessageHook(cmd_alert, "alert"))
|
||||
add_hook("cmd_hook", MessageHook(cmd_coordinates, "coordinates"))
|
||||
context.add_hook("cmd_hook", MessageHook(cmd_weather, "météo"))
|
||||
context.add_hook("cmd_hook", MessageHook(cmd_alert, "alert"))
|
||||
context.add_hook("cmd_hook", MessageHook(cmd_coordinates, "coordinates"))
|
||||
|
||||
|
||||
def help_full ():
|
||||
|
@ -111,10 +111,10 @@ def treat_coord(msg):
|
|||
except ValueError:
|
||||
pass
|
||||
|
||||
if city in DATAS.index:
|
||||
if city in context.data.index:
|
||||
coords = list()
|
||||
coords.append(DATAS.index[city]["lat"])
|
||||
coords.append(DATAS.index[city]["long"])
|
||||
coords.append(context.data.index[city]["lat"])
|
||||
coords.append(context.data.index[city]["long"])
|
||||
return city, coords, specific
|
||||
|
||||
else:
|
||||
|
@ -132,7 +132,7 @@ def treat_coord(msg):
|
|||
|
||||
|
||||
def get_json_weather(coords):
|
||||
wth = web.getJSON("https://api.forecast.io/forecast/%s/%s,%s" % (CONF.getNode("darkskyapi")["key"], float(coords[0]), float(coords[1])))
|
||||
wth = web.getJSON("https://api.forecast.io/forecast/%s/%s,%s" % (context.config.getNode("darkskyapi")["key"], float(coords[0]), float(coords[1])))
|
||||
|
||||
# First read flags
|
||||
if "darksky-unavailable" in wth["flags"]:
|
||||
|
@ -146,10 +146,10 @@ def cmd_coordinates(msg):
|
|||
raise IRCException("indique-moi un nom de ville.")
|
||||
|
||||
j = msg.args[0].lower()
|
||||
if j not in DATAS.index:
|
||||
if j not in context.data.index:
|
||||
raise IRCException("%s n'est pas une ville connue" % msg.args[0])
|
||||
|
||||
coords = DATAS.index[j]
|
||||
coords = context.data.index[j]
|
||||
return Response("Les coordonnées de %s sont %s,%s" % (msg.args[0], coords["lat"], coords["long"]), channel=msg.channel)
|
||||
|
||||
|
||||
|
@ -227,15 +227,15 @@ def parseask(msg):
|
|||
gps_lat = res.group("lat").replace(",", ".")
|
||||
gps_long = res.group("long").replace(",", ".")
|
||||
|
||||
if city_name in DATAS.index:
|
||||
DATAS.index[city_name]["lat"] = gps_lat
|
||||
DATAS.index[city_name]["long"] = gps_long
|
||||
if city_name in context.data.index:
|
||||
context.data.index[city_name]["lat"] = gps_lat
|
||||
context.data.index[city_name]["long"] = gps_long
|
||||
else:
|
||||
ms = ModuleState("city")
|
||||
ms.setAttribute("name", city_name)
|
||||
ms.setAttribute("lat", gps_lat)
|
||||
ms.setAttribute("long", gps_long)
|
||||
DATAS.addChild(ms)
|
||||
save()
|
||||
context.data.addChild(ms)
|
||||
context.save()
|
||||
return Response("ok, j'ai bien noté les coordonnées de %s" % res.group("city"),
|
||||
msg.channel, msg.nick)
|
||||
|
|
|
@ -8,6 +8,7 @@ import re
|
|||
from urllib.parse import quote
|
||||
from urllib.request import urlopen
|
||||
|
||||
from nemubot import context
|
||||
from nemubot.exception import IRCException
|
||||
from nemubot.hooks import hook
|
||||
from nemubot.tools.xmlparser.node import ModuleState
|
||||
|
@ -20,7 +21,7 @@ API_URL="http://worldcup.sfg.io/%s"
|
|||
|
||||
def load(context):
|
||||
from nemubot.event import ModuleEvent
|
||||
add_event(ModuleEvent(func=lambda url: urlopen(url, timeout=10).read().decode(), func_data=API_URL % "matches/current?by_date=DESC", call=current_match_new_action, interval=30))
|
||||
context.add_event(ModuleEvent(func=lambda url: urlopen(url, timeout=10).read().decode(), func_data=API_URL % "matches/current?by_date=DESC", call=current_match_new_action, interval=30))
|
||||
|
||||
|
||||
def help_full ():
|
||||
|
@ -28,31 +29,29 @@ def help_full ():
|
|||
|
||||
|
||||
def start_watch(msg):
|
||||
global DATAS
|
||||
w = ModuleState("watch")
|
||||
w["server"] = msg.server
|
||||
w["channel"] = msg.channel
|
||||
w["proprio"] = msg.nick
|
||||
w["start"] = datetime.now(timezone.utc)
|
||||
DATAS.addChild(w)
|
||||
save()
|
||||
context.data.addChild(w)
|
||||
context.save()
|
||||
raise IRCException("This channel is now watching world cup events!")
|
||||
|
||||
@hook("cmd_hook", "watch_worldcup")
|
||||
def cmd_watch(msg):
|
||||
global DATAS
|
||||
|
||||
# Get current state
|
||||
node = None
|
||||
for n in DATAS.getChilds():
|
||||
for n in context.data.getChilds():
|
||||
if n["server"] == msg.server and n["channel"] == msg.channel:
|
||||
node = n
|
||||
break
|
||||
|
||||
if len(msg.cmds) >= 2:
|
||||
if msg.cmds[1] == "stop" and node is not None:
|
||||
DATAS.delChild(node)
|
||||
save()
|
||||
context.data.delChild(node)
|
||||
context.save()
|
||||
raise IRCException("This channel will not anymore receives world cup events.")
|
||||
elif msg.cmds[1] == "start" and node is None:
|
||||
start_watch(msg)
|
||||
|
@ -62,14 +61,12 @@ def cmd_watch(msg):
|
|||
if node is None:
|
||||
start_watch(msg)
|
||||
else:
|
||||
DATAS.delChild(node)
|
||||
save()
|
||||
context.data.delChild(node)
|
||||
context.save()
|
||||
raise IRCException("This channel will not anymore receives world cup events.")
|
||||
|
||||
def current_match_new_action(match_str, osef):
|
||||
global DATAS
|
||||
|
||||
add_event(ModuleEvent(func=lambda url: urlopen(url).read().decode(), func_data=API_URL % "matches/current?by_date=DESC", call=current_match_new_action, interval=30))
|
||||
context.add_event(ModuleEvent(func=lambda url: urlopen(url).read().decode(), func_data=API_URL % "matches/current?by_date=DESC", call=current_match_new_action, interval=30))
|
||||
|
||||
matches = json.loads(match_str)
|
||||
|
||||
|
@ -81,8 +78,8 @@ def current_match_new_action(match_str, osef):
|
|||
if len(events) > 0:
|
||||
msg += " ; à la " + txt_event(events[0])
|
||||
|
||||
for n in DATAS.getChilds():
|
||||
send_response(n["server"], Response(msg, channel=n["channel"]))
|
||||
for n in context.data.getChilds():
|
||||
context.send_response(n["server"], Response(msg, channel=n["channel"]))
|
||||
|
||||
def is_int(s):
|
||||
try:
|
||||
|
|
|
@ -30,7 +30,6 @@ def reduce(url):
|
|||
"""
|
||||
|
||||
snd_url = "http://ycc.fr/redirection/create/" + quote(url, "/:%@&=?")
|
||||
print_debug(snd_url)
|
||||
return web.getURLContent(snd_url)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user