mirror of
https://gitlab.com/octospacc/WinDog.git
synced 2025-06-05 22:09:20 +02:00
Legacy removals, code restructuring, add send_... functions and better help
This commit is contained in:
@ -1,28 +1,49 @@
|
||||
# ==================================== #
|
||||
# WinDog multi-purpose chatbot #
|
||||
# Licensed under AGPLv3 by OctoSpacc #
|
||||
# ==================================== #
|
||||
|
||||
import base64
|
||||
from binascii import Error as binascii_Error
|
||||
import base256
|
||||
|
||||
CodingsAlgorithms = []
|
||||
CodingsMethods = {
|
||||
"encode:ascii85": base64.a85encode,
|
||||
"decode:ascii85": base64.a85decode,
|
||||
"encode:base16": base64.b16encode,
|
||||
"decode:base16": base64.b16decode,
|
||||
"encode:base32": base64.b32encode,
|
||||
"decode:base32": base64.b32decode,
|
||||
"encode:base32hex": base64.b32hexencode,
|
||||
"decode:base32hex": base64.b32hexdecode,
|
||||
"encode:base64": base64.b64encode,
|
||||
"decode:base64": base64.b64decode,
|
||||
"encode:base85": base64.b85encode,
|
||||
"decode:base85": base64.b85decode,
|
||||
"encode:base256": (lambda decoded: base256.encode_string(decoded.decode()).encode()),
|
||||
"decode:base256": (lambda encoded: base256.decode_string(encoded.decode()).encode()),
|
||||
}
|
||||
for method in dict(CodingsMethods):
|
||||
method2 = method.replace("ascii", 'a').replace("base", 'b')
|
||||
CodingsMethods[method2] = CodingsMethods[method]
|
||||
if (name := method.split(':')[1]) not in CodingsAlgorithms:
|
||||
CodingsAlgorithms.append(name)
|
||||
|
||||
def mCodings(context:EventContext, data:InputMessageData):
|
||||
algorithms = ["base64"]
|
||||
methods = {
|
||||
"encode_base64": base64.b64encode,
|
||||
"decode_base64": base64.b64decode,
|
||||
"encode_b64": base64.b64encode,
|
||||
"decode_b64": base64.b64decode,
|
||||
}
|
||||
if (method := ObjGet(methods, f"{data.command.name}_{data.command.arguments.algorithm}")):
|
||||
try:
|
||||
result = method((data.command.body or (data.quoted and data.quoted.text_plain)).encode()).decode()
|
||||
SendMessage(context, {"text_html": f"<pre>{html_escape(result)}</pre>"})
|
||||
except binascii_Error:
|
||||
SendMessage(context, {"text_plain": f"An error occurred."})
|
||||
else:
|
||||
language = data.user.settings.language
|
||||
SendMessage(context, {
|
||||
"text_html": f'{context.endpoint.help_text(language)}\n\n{context.module.get_string("algorithms", language)}: {algorithms}'})
|
||||
language = data.user.settings.language
|
||||
method = obj_get(CodingsMethods, f"{data.command.name}:{data.command.arguments.algorithm}")
|
||||
text = (data.command.body or (data.quoted and data.quoted.text_plain))
|
||||
if not (method and text):
|
||||
return send_status_400(context, language)
|
||||
try:
|
||||
return send_message(context, {
|
||||
"text_html": f"<pre>{html_escape(method(text.encode()).decode())}</pre>"})
|
||||
except Exception:
|
||||
return send_status_error(context, language)
|
||||
|
||||
RegisterModule(name="Codings", group="Geek", endpoints=[
|
||||
SafeNamespace(names=["encode", "decode"], handler=mCodings, body=False, quoted=False, arguments={
|
||||
"algorithm": True,
|
||||
}),
|
||||
}, help_extra=(lambda endpoint, lang: f'{endpoint.module.get_string("algorithms", lang)}: <code>{"</code>, <code>".join(CodingsAlgorithms)}</code>.')),
|
||||
])
|
||||
|
||||
|
Reference in New Issue
Block a user