rewrite: Move GUI cards into main repo.

This commit is contained in:
2022-12-23 07:02:26 +02:00
parent f328324747
commit 1cef97cdd4
20 changed files with 6110 additions and 0 deletions

View File

@@ -0,0 +1,90 @@
import logging
import time
import traceback
import discord
from LionModule import LionModule
from meta import client
from utils.ratelimits import RateLimit
from ..client import EmptyResponse, request
class PluginModule(LionModule):
def cmd(self, name, **kwargs):
# Remove any existing command with this name
for module in client.modules:
for i, cmd in enumerate(module.cmds):
if cmd.name == name:
module.cmds.pop(i)
return super().cmd(name, **kwargs)
async def on_exception(self, ctx, exception):
try:
raise exception
except (ConnectionError, EmptyResponse) as e:
full_traceback = traceback.format_exc()
only_error = "".join(traceback.TracebackException.from_exception(e).format_exception_only())
client.log(
("Caught a communication exception while "
"executing command '{cmdname}' from module '{module}' "
"from user '{message.author}' (uid:{message.author.id}) "
"in guild '{message.guild}' (gid:{guildid}) "
"in channel '{message.channel}' (cid:{message.channel.id}).\n"
"Message Content:\n"
"{content}\n"
"{traceback}\n\n"
"{flat_ctx}").format(
cmdname=ctx.cmd.name,
module=ctx.cmd.module.name,
message=ctx.msg,
guildid=ctx.guild.id if ctx.guild else None,
content='\n'.join('\t' + line for line in ctx.msg.content.splitlines()),
traceback=full_traceback,
flat_ctx=ctx.flatten()
),
context="mid:{}".format(ctx.msg.id),
level=logging.ERROR
)
error_embed = discord.Embed(title="Sorry, something went wrong!")
error_embed.description = (
"An unexpected error occurred while communicating with our rendering server!\n"
"Our development team has been notified, and the issue should be fixed soon.\n"
)
if logging.getLogger().getEffectiveLevel() < logging.INFO:
error_embed.add_field(
name="Exception",
value="`{}`".format(only_error)
)
await ctx.reply(embed=error_embed)
except Exception:
await super().on_exception(ctx, exception)
module = PluginModule("GUI")
ratelimit = RateLimit(5, 30)
logging.getLogger('PIL').setLevel(logging.WARNING)
@module.launch_task
async def ping_server(client):
start = time.time()
try:
await request('ping')
except Exception:
logging.error(
"Failed to ping the rendering server!",
exc_info=True
)
else:
end = time.time()
client.log(
f"Rendering server responded in {end-start:.6f} seconds!",
context="GUI INIT",
)