Fix error not being displayed if game name Unknown (#7)

* 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>
This commit is contained in:
Mark Araujo 2021-09-30 08:25:47 +01:00 committed by TSR Berry
parent 82958d47cb
commit 32a8b6b431
No known key found for this signature in database
GPG key ID: 52353C0A4CCA15E2

View file

@ -151,7 +151,8 @@ class LogFileReader(Cog):
( (
f"**Audio Backend:** `{self.embed['settings']['audio_backend']}`", f"**Audio Backend:** `{self.embed['settings']['audio_backend']}`",
f"**Console Mode:** `{self.embed['settings']['docked']}`", 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']}`", f"**V-Sync:** `{self.embed['settings']['vsync']}`",
) )
) )
@ -372,15 +373,18 @@ class LogFileReader(Cog):
else: else:
pass pass
# Game name parsed last so that user settings are visible with empty log # Game name parsed last so that user settings are visible with empty log
self.embed["game_info"]["game_name"] = ( try:
re.search( self.embed["game_info"]["game_name"] = (
r"Loader LoadNca: Application Loaded:\s([^;\n\r]*)", re.search(
log_file, r"Loader LoadNca: Application Loaded:\s([^;\n\r]*)",
re.MULTILINE, log_file,
re.MULTILINE,
)
.group(1)
.rstrip()
) )
.group(1) except AttributeError:
.rstrip() pass
)
if shader_cache_warn: if shader_cache_warn:
shader_cache_warn = f"⚠️ Cache collision detected. Investigate possible shader cache issues" 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**" firmware_warning = f"**❌ Nintendo Switch firmware not found**"
self.embed["game_info"]["notes"].append(firmware_warning) 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}$") mainline_version = re.compile(r"^\d\.\d\.(\d){4}$")
pr_version = re.compile(r"^\d\.\d\.\d\+([a-f]|\d){7}$") pr_version = re.compile(r"^\d\.\d\.\d\+([a-f]|\d){7}$")
ldn_version = re.compile(r"^\d\.\d\.\d\-ldn\d\.\d$") ldn_version = re.compile(r"^\d\.\d\.\d\-ldn\d\.\d$")