Convert module alias to nemubot V3
This commit is contained in:
parent
598f626e0b
commit
a8725b0189
113
alias.py
113
alias.py
@ -1,113 +0,0 @@
|
||||
# coding=utf-8
|
||||
|
||||
import re
|
||||
import sys
|
||||
from datetime import datetime
|
||||
from xml.dom.minidom import parse
|
||||
from xml.dom.minidom import parseString
|
||||
from xml.dom.minidom import getDOMImplementation
|
||||
|
||||
filename = ""
|
||||
ALIAS = {}
|
||||
variables = {}
|
||||
|
||||
def load_module(datas_path):
|
||||
"""Load this module"""
|
||||
global ALIAS, filename
|
||||
SCORES = dict ()
|
||||
filename = datas_path + "/alias.xml"
|
||||
|
||||
sys.stdout.write ("Loading aliaslist ... ")
|
||||
dom = parse(filename)
|
||||
for item in dom.documentElement.getElementsByTagName("alias"):
|
||||
ALIAS[item.getAttribute("alias")] = item.getAttribute("origin")
|
||||
for item in dom.documentElement.getElementsByTagName("variable"):
|
||||
variables[item.getAttribute("name")] = item.getAttribute("value")
|
||||
print ("done (%d aliases and %d vars)" % (len(ALIAS), len (variables)))
|
||||
|
||||
def save_module():
|
||||
"""Save the aliases"""
|
||||
global ALIAS, variables, filename
|
||||
sys.stdout.write ("Saving aliases ... ")
|
||||
|
||||
impl = getDOMImplementation()
|
||||
newdoc = impl.createDocument(None, 'aliaslist', None)
|
||||
top = newdoc.documentElement
|
||||
|
||||
for name in ALIAS.keys():
|
||||
item = parseString ('<alias alias="%s" origin="%s" />' % (name, ALIAS[name])).documentElement
|
||||
top.appendChild(item);
|
||||
|
||||
for name in variables.keys():
|
||||
item = parseString ('<variable name="%s" value="%s" />' % (name, variables[name])).documentElement
|
||||
top.appendChild(item);
|
||||
|
||||
with open(filename, "w") as f:
|
||||
newdoc.writexml (f)
|
||||
print ("done")
|
||||
|
||||
|
||||
def help_tiny ():
|
||||
"""Line inserted in the response to the command !help"""
|
||||
return "alias module"
|
||||
|
||||
def help_full ():
|
||||
return "TODO"
|
||||
|
||||
|
||||
def parseanswer (msg):
|
||||
global ALIAS, variables
|
||||
if msg.cmd[0] == "set":
|
||||
if len (msg.cmd) > 2:
|
||||
variables[msg.cmd[1]] = " ".join(msg.cmd[2:])
|
||||
msg.send_snd("Variable $%s définie." % msg.cmd[1])
|
||||
else:
|
||||
msg.send_snd("!set prend au minimum deux arguments : le nom de la variable et sa valeur.")
|
||||
return True
|
||||
elif msg.cmd[0] in ALIAS:
|
||||
msg.content = msg.content.replace("!" + msg.cmd[0], ALIAS[msg.cmd[0]], 1)
|
||||
|
||||
cnt = msg.content.split(' ')
|
||||
for i in range(0,len(cnt)):
|
||||
if len (cnt[i]) and cnt[i][0] == '$':
|
||||
if cnt[i][1] == '$' and len(cnt[i]) == 2:
|
||||
cnt[i] = "$"
|
||||
elif cnt[i] == "$sender":
|
||||
cnt[i] = msg.sender
|
||||
elif cnt[i] == "$chan" or cnt[i] == "$channel":
|
||||
cnt[i] = msg.channel
|
||||
elif cnt[i] == "$date":
|
||||
now = datetime.now()
|
||||
cnt[i] = ("%d/%d/%d %d:%d:%d"%(now.day, now.month, now.year, now.hour, now.minute, now.second))
|
||||
elif cnt[i] == "$date,":
|
||||
now = datetime.now()
|
||||
cnt[i] = ("%d/%d/%d %d:%d:%d,"%(now.day, now.month, now.year, now.hour, now.minute, now.second))
|
||||
elif cnt[i] == "$date.":
|
||||
now = datetime.now()
|
||||
cnt[i] = ("%d/%d/%d %d:%d:%d."%(now.day, now.month, now.year, now.hour, now.minute, now.second))
|
||||
elif cnt[i][1:] in variables:
|
||||
cnt[i] = variables[cnt[i][1:]]
|
||||
else:
|
||||
cnt[i] = ""
|
||||
msg.content = " ".join(cnt)
|
||||
msg.reparsemsg()
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
def parseask (msg):
|
||||
global ALIAS
|
||||
if re.match(".*(set|cr[ée]{2}|nouvel(le)?) alias.*", msg.content) is not None:
|
||||
result = re.match(".*alias !?([a-zA-Z0-9_-]+) (pour|=|:) (.+)$", msg.content)
|
||||
if result.group(1) in ALIAS or result.group(3).find("alias") >= 0:
|
||||
msg.send_snd("Cet alias est déjà défini.")
|
||||
else:
|
||||
ALIAS[result.group(1)] = result.group(3)
|
||||
msg.send_snd("Nouvel alias %s défini avec succès." % result.group(1))
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def parselisten (msg):
|
||||
return False
|
83
modules/alias/__init__.py
Normal file
83
modules/alias/__init__.py
Normal file
@ -0,0 +1,83 @@
|
||||
# coding=utf-8
|
||||
|
||||
import re
|
||||
import sys
|
||||
from datetime import datetime
|
||||
|
||||
nemubotversion = 3.0
|
||||
|
||||
from module_state import ModuleState
|
||||
|
||||
def load():
|
||||
"""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")
|
||||
|
||||
def help_tiny ():
|
||||
"""Line inserted in the response to the command !help"""
|
||||
return "alias module"
|
||||
|
||||
def help_full ():
|
||||
return "TODO"
|
||||
|
||||
|
||||
def parseanswer (msg):
|
||||
global DATAS
|
||||
if msg.cmd[0] == "set":
|
||||
if len (msg.cmd) > 2:
|
||||
var = ModuleState("variable")
|
||||
var["name"] = msg.cmd[1]
|
||||
var["value"] = " ".join(msg.cmd[2:])
|
||||
DATAS.getNode("variables").addChild(var)
|
||||
msg.send_snd("Variable $%s définie." % msg.cmd[1])
|
||||
save()
|
||||
else:
|
||||
msg.send_snd("!set prend au minimum deux arguments : le nom de la variable et sa valeur.")
|
||||
return True
|
||||
elif msg.cmd[0] in DATAS.getNode("aliases").index:
|
||||
msg.content = msg.content.replace("!" + msg.cmd[0], DATAS.getNode("aliases").index[msg.cmd[0]]["origin"], 1)
|
||||
|
||||
cnt = msg.content.split(' ')
|
||||
for i in range(0,len(cnt)):
|
||||
res = re.match("^([^a-zA-Z0-9]*)\\$([a-zA-Z0-9]+)(.*)$", cnt[i])
|
||||
if res is not None:
|
||||
if res.group(2) == "sender":
|
||||
cnt[i] = msg.sender
|
||||
elif res.group(2) == "chan" or res.group(2) == "channel":
|
||||
cnt[i] = msg.channel
|
||||
elif res.group(2) == "date":
|
||||
now = datetime.now()
|
||||
cnt[i] = ("%d/%d/%d %d:%d:%d"%(now.day, now.month, now.year, now.hour, now.minute, now.second))
|
||||
elif res.group(2) in DATAS.getNode("variables").index:
|
||||
cnt[i] = DATAS.getNode("variables").index[res.group(2)]["value"]
|
||||
else:
|
||||
cnt[i] = ""
|
||||
cnt[i] = res.group(1) + cnt[i] + res.group(3)
|
||||
msg.content = " ".join(cnt)
|
||||
msg.reparsemsg()
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
def parseask (msg):
|
||||
global ALIAS
|
||||
if re.match(".*(set|cr[ée]{2}|nouvel(le)?) alias.*", msg.content) is not None:
|
||||
result = re.match(".*alias !?([a-zA-Z0-9_-]+) (pour|=|:) (.+)$", msg.content)
|
||||
if result.group(1) in DATAS.getNode("aliases").index or result.group(3).find("alias") >= 0:
|
||||
msg.send_snd("Cet alias est déjà défini.")
|
||||
else:
|
||||
alias = ModuleState("alias")
|
||||
alias["alias"] = result.group(1)
|
||||
alias["origin"] = result.group(3)
|
||||
alias["creator"] = msg.sender
|
||||
DATAS.getNode("aliases").addChild(alias)
|
||||
msg.send_snd("Nouvel alias %s défini avec succès." % result.group(1))
|
||||
save()
|
||||
return True
|
||||
return False
|
Loading…
Reference in New Issue
Block a user