mirror of
https://github.com/Ryujinx/ryuko-ng.git
synced 2025-01-03 16:25:46 +00:00
Fix a few macro and logfilereader issues (#43)
* Try to improve exception logging * Fix KeyError for new aliases * List aliases and macros together * Fix AttributeError when reading logs
This commit is contained in:
parent
994438d3fa
commit
e937abb41c
|
@ -6,6 +6,7 @@ import sys
|
|||
import aiohttp
|
||||
import discord
|
||||
from discord.ext import commands
|
||||
from discord.ext.commands import CommandError, Context
|
||||
|
||||
if len(sys.argv[1:]) != 1:
|
||||
sys.stderr.write("usage: <state_dir>")
|
||||
|
@ -133,12 +134,12 @@ async def on_command(ctx):
|
|||
|
||||
|
||||
@bot.event
|
||||
async def on_error(event_method, *args, **kwargs):
|
||||
log.exception(f"Error on {event_method}:")
|
||||
async def on_error(event: str, *args, **kwargs):
|
||||
log.exception(f"Error on {event}:")
|
||||
|
||||
|
||||
@bot.event
|
||||
async def on_command_error(ctx, error):
|
||||
async def on_command_error(ctx: Context, error: CommandError):
|
||||
error_text = str(error)
|
||||
|
||||
err_msg = (
|
||||
|
@ -147,7 +148,7 @@ async def on_command_error(ctx, error):
|
|||
f"of type {type(error)}: {error_text}"
|
||||
)
|
||||
|
||||
log.error(err_msg)
|
||||
log.exception(err_msg, error)
|
||||
|
||||
if not isinstance(error, commands.CommandNotFound):
|
||||
err_msg = bot.escape_message(err_msg)
|
||||
|
@ -259,8 +260,8 @@ async def main():
|
|||
for cog in config.initial_cogs:
|
||||
try:
|
||||
await bot.load_extension(cog)
|
||||
except:
|
||||
log.exception(f"Failed to load cog {cog}.")
|
||||
except Exception as e:
|
||||
log.exception(f"Failed to load cog {cog}:", e)
|
||||
await bot.start(config.token)
|
||||
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ logging.basicConfig(
|
|||
|
||||
class LogFileReader(Cog):
|
||||
@staticmethod
|
||||
def is_valid_log(attachment: Attachment) -> tuple[bool, bool]:
|
||||
def is_valid_log_name(attachment: Attachment) -> tuple[bool, bool]:
|
||||
filename = attachment.filename
|
||||
# Any message over 2000 chars is uploaded as message.txt, so this is accounted for
|
||||
ryujinx_log_file_regex = re.compile(r"^Ryujinx_.*\.log|message\.txt$")
|
||||
|
@ -94,7 +94,15 @@ class LogFileReader(Cog):
|
|||
# Large files show a header value when not downloaded completely
|
||||
# this regex makes sure that the log text to read starts from the first timestamp, ignoring headers
|
||||
log_file_header_regex = re.compile(r"\d{2}:\d{2}:\d{2}\.\d{3}.*", re.DOTALL)
|
||||
log_file = re.search(log_file_header_regex, log_file).group(0)
|
||||
log_file_match = re.search(log_file_header_regex, log_file)
|
||||
|
||||
if log_file_match:
|
||||
log_file = log_file_match.group(0)
|
||||
else:
|
||||
return Embed(
|
||||
colour=self.ryujinx_blue,
|
||||
description="This log file appears to be invalid. Please make sure to upload a Ryujinx log file.",
|
||||
)
|
||||
|
||||
def is_tid_blocked(log_file=log_file):
|
||||
game_name = re.search(
|
||||
|
@ -828,7 +836,7 @@ class LogFileReader(Cog):
|
|||
return await message.channel.send(
|
||||
content=author_mention,
|
||||
embed=Embed(
|
||||
description=f"This log file appears to be invalid. Please re-check and re-upload your log file.",
|
||||
description="This log file appears to be invalid. Please re-check and re-upload your log file.",
|
||||
colour=self.ryujinx_blue,
|
||||
),
|
||||
)
|
||||
|
@ -866,7 +874,7 @@ class LogFileReader(Cog):
|
|||
message = await ctx.fetch_message(ctx.message.reference.message_id)
|
||||
if len(message.attachments) >= attachment_number:
|
||||
attachment = message.attachments[attachment_number - 1]
|
||||
is_log_file, _ = self.is_valid_log(attachment)
|
||||
is_log_file, _ = self.is_valid_log_name(attachment)
|
||||
|
||||
if is_log_file:
|
||||
return await self.analyse_log_message(
|
||||
|
@ -888,7 +896,7 @@ class LogFileReader(Cog):
|
|||
if message.author.bot:
|
||||
return
|
||||
for attachment in message.attachments:
|
||||
is_log_file, is_ryujinx_log_file = self.is_valid_log(attachment)
|
||||
is_log_file, is_ryujinx_log_file = self.is_valid_log_name(attachment)
|
||||
|
||||
if message.channel.id in self.bot_log_allowed_channels.values():
|
||||
return await self.analyse_log_message(
|
||||
|
@ -904,7 +912,7 @@ class LogFileReader(Cog):
|
|||
)
|
||||
elif (
|
||||
is_log_file
|
||||
and not message.channel.id in self.bot_log_allowed_channels.values()
|
||||
and message.channel.id not in self.bot_log_allowed_channels.values()
|
||||
):
|
||||
return await message.author.send(
|
||||
content=message.author.mention,
|
||||
|
|
|
@ -127,13 +127,24 @@ class Macro(Cog):
|
|||
|
||||
@commands.cooldown(3, 30, BucketType.channel)
|
||||
@commands.command(name="macros", aliases=["ml", "listmacros", "list_macros"])
|
||||
async def list_macros(self, ctx: Context):
|
||||
async def list_macros(self, ctx: Context, macros_only=False):
|
||||
macros = get_macros_dict(self.bot)
|
||||
if len(macros["macros"]) > 0:
|
||||
macros = [f"- {key}\n" for key in sorted(macros["macros"].keys())]
|
||||
message = "📝 **Macros**:\n"
|
||||
for macro_key in macros:
|
||||
message += macro_key
|
||||
|
||||
for key in sorted(macros["macros"].keys()):
|
||||
message += f"- {key}\n"
|
||||
if not macros_only and key in macros["aliases"].keys():
|
||||
message += " - __aliases__: "
|
||||
first_alias = True
|
||||
for alias in macros["aliases"][key]:
|
||||
if first_alias:
|
||||
message += alias
|
||||
first_alias = False
|
||||
continue
|
||||
message += f", {alias}"
|
||||
message += "\n"
|
||||
|
||||
await ctx.send(message)
|
||||
else:
|
||||
await ctx.send("Couldn't find any macros.")
|
||||
|
|
|
@ -85,6 +85,8 @@ def add_aliases(bot, key: str, aliases: list[str]) -> bool:
|
|||
for alias in aliases:
|
||||
alias = alias.lower()
|
||||
if is_macro_key_available(bot, alias, macros):
|
||||
if key not in macros["aliases"].keys():
|
||||
macros["aliases"][key] = []
|
||||
macros["aliases"][key].append(alias)
|
||||
success = True
|
||||
if success:
|
||||
|
|
Loading…
Reference in a new issue