feat(seautils): improve error code handling
Some checks failed
Actions / Build Documentation (MkDocs) (push) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (push) Failing after 38s

This commit is contained in:
Seaswimmer 2024-05-28 17:53:58 -04:00
parent aa7e347a95
commit 028cae9e99
Signed by: cswimr
GPG key ID: 5D671B5D03D65A7F

View file

@ -12,7 +12,7 @@ from functools import partial, partialmethod
from typing import Any from typing import Any
import yaml import yaml
from discord import Embed, app_commands from discord import Color, Embed, app_commands
from discord.utils import CachedSlotProperty, cached_property from discord.utils import CachedSlotProperty, cached_property
from redbot.core import commands from redbot.core import commands
from redbot.core.bot import Red from redbot.core.bot import Red
@ -103,8 +103,8 @@ class SeaUtils(commands.Cog):
await ctx.maybe_send_embed(content= "An error was encountered!\n" + cf.box(text=stderr.decode())) await ctx.maybe_send_embed(content= "An error was encountered!\n" + cf.box(text=stderr.decode()))
else: else:
data = yaml.safe_load(stdout.decode()) data = yaml.safe_load(stdout.decode())
message_data = data[0]['message'] message_data: dict = data[0]['message']
response_data = message_data['response_message_data'] response_data: dict = message_data['response_message_data']
if ctx.embed_requested(): if ctx.embed_requested():
embed = Embed( embed = Embed(
title="DNS Query Result", title="DNS Query Result",
@ -118,12 +118,23 @@ class SeaUtils(commands.Cog):
embed.add_field(name="Status", value=response_data['status'], inline=True) embed.add_field(name="Status", value=response_data['status'], inline=True)
embed.add_field(name="Flags", value=response_data['flags'], inline=True) embed.add_field(name="Flags", value=response_data['flags'], inline=True)
match response_data.get('status'):
case 'FORMERR', 'SERVFAIL', 'NXDOMAIN', 'NOTIMP', 'REFUSED':
embed.colour = Color.red()
embed.description = "Dig query did not return `NOERROR` status."
case _:
embed.colour = await ctx.embed_color()
question_section = "\n".join(response_data['QUESTION_SECTION']) question_section = "\n".join(response_data['QUESTION_SECTION'])
embed.add_field(name="Question Section", value=f"```{question_section}```", inline=False) embed.add_field(name="Question Section", value=f"```{question_section}```", inline=False)
if 'ANSWER_SECTION' in response_data: if 'ANSWER_SECTION' in response_data:
answer_section = "\n".join(response_data['ANSWER_SECTION']) answer_section = "\n".join(response_data['ANSWER_SECTION'])
embed.add_field(name="Answer Section", value=f"```{answer_section}```", inline=False) embed.add_field(name="Answer Section", value=f"```{answer_section}```", inline=False)
if 'AUTHORITY_SECTION' in response_data:
authority_section = "\n".join(response_data['AUTHORITY_SECTION'])
embed.add_field(name="Authority Section", value=f"```{authority_section}```", inline=False)
await ctx.send(embed=embed) await ctx.send(embed=embed)
else: else:
await ctx.send(content=cf.box(text=stdout, lang='yaml')) await ctx.send(content=cf.box(text=stdout, lang='yaml'))