Updated Web backend now with multi-user, misc data and endpoints improvements

This commit is contained in:
2024-08-12 02:03:47 +02:00
parent 6ebc68127e
commit 5ba0df43c4
16 changed files with 341 additions and 180 deletions

View File

@@ -18,11 +18,13 @@ UserSettingsLimits = {
def cConfig(context:EventContext, data:InputMessageData):
language = data.user.settings.language
if not (settings := UserSettingsData(data.user.id)):
if (key := data.command.arguments.get):
key = key.lower()
if (not key) or (key not in UserSettingsLimits):
return send_status_400(context, language)
if not (settings := UserSettingsData(data.user.id))._exists:
User.update(settings=EntitySettings.create()).where(User.id == data.user.id).execute()
settings = UserSettingsData(data.user.id)
if not (key := data.command.arguments.get) or (key not in UserSettingsLimits):
return send_status_400(context, language)
if (value := data.command.body):
if len(value) > UserSettingsLimits[key]:
return send_status(context, 500, language)
@@ -52,7 +54,7 @@ def cPing(context:EventContext, data:InputMessageData):
RegisterModule(name="Base", endpoints=[
SafeNamespace(names=["source"], handler=cSource),
SafeNamespace(names=["config"], handler=cConfig, body=False, arguments={
SafeNamespace(names=["config", "settings"], handler=cConfig, body=False, arguments={
"get": True,
}),
#SafeNamespace(names=["gdpr"], summary="Operations for european citizens regarding your personal data.", handler=cGdpr),

View File

@@ -7,7 +7,7 @@ def cEcho(context:EventContext, data:InputMessageData):
if not (text := data.command.body):
return send_message(context, {
"text_html": context.endpoint.get_string("empty", data.user.settings.language)})
prefix = f'<a href="{data.message_url}">🗣️</a> '
prefix = f'<a href="{data.message_url or ""}">🗣️</a> '
if len(data.command.tokens) == 2: # text is a single word
nonascii = True
for char in data.command.tokens[1]:

View File

@@ -20,7 +20,8 @@ def cHelp(context:EventContext, data:InputMessageData) -> None:
text += (f"\n\n{module}" + (f": {summary}" if summary else ''))
for endpoint in endpoints:
summary = Modules[module].get_string(f"endpoints.{endpoint.names[0]}.summary", language)
text += (f"\n* {prefix}{', {prefix}'.join(endpoint.names)}" + (f": {summary}" if summary else ''))
text += (f"\n* {prefix}{f', {prefix}'.join(endpoint.names)}"
+ (f": {summary}" if summary else ''))
text = text.strip()
return send_message(context, {"text_html": text})

View File

@@ -10,6 +10,7 @@ MicrosoftBingSettings = {}
""" # end windog config # """
from urlextract import URLExtract
from urllib import parse as urlparse
from urllib.request import urlopen, Request
def RandomHexString(length:int) -> str:

View File

@@ -29,7 +29,7 @@ def cExec(context:EventContext, data:InputMessageData):
def cRestart(context:EventContext, data:InputMessageData):
if (data.user.id not in AdminIds) and (data.user.tag not in AdminIds):
return send_message(context, {"text_plain": "Permission denied."})
return send_status(context, 403, data.user.settings.language)
open("./.WinDog.Restart.lock", 'w').close()
return send_message(context, {"text_plain": "Bot restart queued."})