From 32a8b6b431559ad208762384189d3428af1752d9 Mon Sep 17 00:00:00 2001 From: Mark Araujo <36304206+Pixxel123@users.noreply.github.com> Date: Thu, 30 Sep 2021 08:25:47 +0100 Subject: [PATCH] Fix error not being displayed if game name Unknown (#7) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Log reading capabilities to Ryuko bot (#3) * Add log reading capabilities - User hardware specs - Game info - Controller configuration - Last error snippet in log - Warnings when using macOS or Intel iGPU - Warning of logs not turned on * Allowed log reading channels moved to config This is easier for contributors to change their config file for testing * Fixes large files not showing error snippet - Large files are partially downloaded and show header information which messes with log analysis, this gets stripped. - Finding error messages function improved * Default logs enabled shows a green checkmark * Better feedback with log parsing message - Bot prints `Log parsing...` and update message once log analysis done - Added better error logging to console * Better handling of invalid files warning - Also fixed typo with bot message edit function * Refactored embed generation to make more sense - Embed is now based off a generic json assuming Unknown values at first - Embed fields moved closer together - Fields with newlines joined instead of manually separated - Intel iGPU message changed to show preference for discrete GPU's * Refactor to be simpler and easier to read. - Hardware, ryujinx and log analysis split into separate functions - Regex explicitly defined for each property instead of confusing map - Added user settings reported, shows PPTC enabled or disabled * Game notes sorted by order of severity Notes will appear with most severe warnings first as follows: ❌ ⚠️ ℹ ✅ * Analyses toggleable settings that appear in log Currently these are: PPTC, audio backed, docked/handheld and vsync. - Formatting change so these settings are more visible in bot embed * Refactored user_settings, rewording of bot embed - User settings reading handles missing log info for older versions - `Switch Mode` (docked/handheld info) changed to `Console Mode` - Missing firmware warning if firmware not installed * Warning when shader cache collision detected * Notes time elapsed in log file - Error handling for no notes to log * Show values for some user settings: audio, docked, missing services, resolution, shader cache and vsync * Analyse user changeable settings - Restructed embed to allow easier settings handling - Changed embed formatting to deal with inline colums more cleanly * Log file is now default function parameter * Better sorting of analysis messages - Now sorted alphabetically and by severity for consistency - Show available RAM in low RAM warning - Fix variable name misspelling * Logging level changed to info * Warn if bad dump in error message * Add warning for no custom build support * Warn user to post log in correct channel - Warn about not supporting custom builds - Warn to post in pr build if detected - Warn about channels to post logs if detected in #general * Fix logfilereader logic * Ryuko bot fixes and improvements (#4) * Fixes HTTPException by properly handling newline regex * Improves information display: - Shows settings info if no game is detected running - Empty log warning takes up less space - Error, Mods and Notes not shown on empty log * Improved empty log message - Also allow logs parsing in linux channel, as well as mentioning when posting in non-allowed channels * Fix ResScale parse error, better empty log message * DM users about correct channels instead of in chat * Fix variable spelling, clearer bad dump warning * Shows error snippet on empty log (#6) * Error snippet shown on empty log - Shader cache corruption warning * Loop to get missing info in log * Error search handles multiple terms - Minor spelling correction for resolution value - User settings visible on empty log * Fix error not being displayed if game name Unknown * Warns about PPTC and shader caches being disabled. - Warns about audio backend being set to Dummy - Shows PPTC cache and shader cache enabled/disabled Co-authored-by: Mary <1760003+Thog@users.noreply.github.com> --- robocop_ng/cogs/logfilereader.py | 36 ++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/robocop_ng/cogs/logfilereader.py b/robocop_ng/cogs/logfilereader.py index 9e46793..533c8d0 100644 --- a/robocop_ng/cogs/logfilereader.py +++ b/robocop_ng/cogs/logfilereader.py @@ -151,7 +151,8 @@ class LogFileReader(Cog): ( f"**Audio Backend:** `{self.embed['settings']['audio_backend']}`", f"**Console Mode:** `{self.embed['settings']['docked']}`", - f"**PPTC:** `{self.embed['settings']['pptc']}`", + f"**PPTC cache:** `{self.embed['settings']['pptc']}`", + f"**Shader cache:** `{self.embed['settings']['shader_cache']}`", f"**V-Sync:** `{self.embed['settings']['vsync']}`", ) ) @@ -372,15 +373,18 @@ class LogFileReader(Cog): else: pass # Game name parsed last so that user settings are visible with empty log - self.embed["game_info"]["game_name"] = ( - re.search( - r"Loader LoadNca: Application Loaded:\s([^;\n\r]*)", - log_file, - re.MULTILINE, + try: + self.embed["game_info"]["game_name"] = ( + re.search( + r"Loader LoadNca: Application Loaded:\s([^;\n\r]*)", + log_file, + re.MULTILINE, + ) + .group(1) + .rstrip() ) - .group(1) - .rstrip() - ) + except AttributeError: + pass if shader_cache_warn: shader_cache_warn = f"⚠️ Cache collision detected. Investigate possible shader cache issues" @@ -481,6 +485,20 @@ class LogFileReader(Cog): firmware_warning = f"**❌ Nintendo Switch firmware not found**" self.embed["game_info"]["notes"].append(firmware_warning) + if self.embed["settings"]["audio_backend"] == "Dummy": + dummy_warning = ( + f"⚠️ Dummy audio backend, consider changing to SDL2 or OpenAL" + ) + self.embed["game_info"]["notes"].append(dummy_warning) + + if self.embed["settings"]["pptc"] == "Disabled": + pptc_warning = f"⚠️ PPTC cache should be enabled" + self.embed["game_info"]["notes"].append(pptc_warning) + + if self.embed["settings"]["shader_cache"] == "Disabled": + shader_warning = f"⚠️ Shader cache should be enabled" + self.embed["game_info"]["notes"].append(shader_warning) + mainline_version = re.compile(r"^\d\.\d\.(\d){4}$") pr_version = re.compile(r"^\d\.\d\.\d\+([a-f]|\d){7}$") ldn_version = re.compile(r"^\d\.\d\.\d\-ldn\d\.\d$")