mirror of
https://github.com/wlinator/luminara.git
synced 2024-10-02 18:03:12 +00:00
refactor: Add error message for case not found
This commit is contained in:
parent
509304ae28
commit
8823e9eb2a
4 changed files with 84 additions and 34 deletions
|
@ -30,6 +30,8 @@
|
|||
"error_lumi_exception_description": "{0}",
|
||||
"error_missing_permissions_author": "Missing Permissions",
|
||||
"error_missing_permissions_description": "you lack the required permissions to run this command.",
|
||||
"error_no_case_found_author": "Case Not Found",
|
||||
"error_no_case_found_description": "no case found with that ID.",
|
||||
"error_no_private_message_author": "Guild Only",
|
||||
"error_no_private_message_description": "this command can only be used in servers.",
|
||||
"error_not_allowed_in_channel_author": "Not Allowed In Channel",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import discord
|
||||
from discord.ext import bridge, commands
|
||||
|
||||
from modules.moderation import ban
|
||||
from modules.moderation import ban, cases
|
||||
|
||||
|
||||
class Moderation(commands.Cog):
|
||||
|
@ -46,6 +46,22 @@ class Moderation(commands.Cog):
|
|||
):
|
||||
await ban.unban_user(ctx, target, reason)
|
||||
|
||||
@bridge.bridge_command(
|
||||
name="case",
|
||||
aliases=["c"],
|
||||
description="View a case by its number.",
|
||||
help="Views a case by its number in the server.",
|
||||
guild_only=True,
|
||||
)
|
||||
@bridge.has_permissions(view_audit_log=True)
|
||||
@commands.guild_only()
|
||||
async def case_command(
|
||||
self,
|
||||
ctx,
|
||||
case_number: int,
|
||||
):
|
||||
await cases.view_case_by_number(ctx, ctx.guild.id, case_number)
|
||||
|
||||
|
||||
def setup(client):
|
||||
client.add_cog(Moderation(client))
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
from discord.ext import pages
|
||||
from discord.ext.commands import UserConverter
|
||||
from services.moderation.case_service import CaseService
|
||||
from modules.moderation.utils.case_embed import create_case_embed
|
||||
from lib.embed_builder import EmbedBuilder
|
||||
from lib.constants import CONST
|
||||
|
||||
case_service = CaseService()
|
||||
|
||||
|
@ -8,47 +11,58 @@ async def view_case_by_number(ctx, guild_id: int, case_number: int):
|
|||
case = case_service.fetch_case_by_guild_and_number(guild_id, case_number)
|
||||
|
||||
if not case:
|
||||
return await ctx.send("No case found with that ID.")
|
||||
embed = EmbedBuilder.create_error_embed(
|
||||
ctx,
|
||||
author_text=CONST.STRINGS["error_no_case_found_author"],
|
||||
description=CONST.STRINGS["error_no_case_found_description"],
|
||||
)
|
||||
return await ctx.respond(embed=embed)
|
||||
|
||||
await ctx.send(
|
||||
f"Case {case['case_number']}: {case['action_type']} - {case['reason']}",
|
||||
target = await UserConverter().convert(ctx, str(case["target_id"]))
|
||||
embed = create_case_embed(
|
||||
ctx,
|
||||
target,
|
||||
case["case_number"],
|
||||
case["action_type"],
|
||||
case["reason"],
|
||||
)
|
||||
await ctx.respond(embed=embed)
|
||||
|
||||
|
||||
async def view_all_cases_in_guild(ctx, guild_id: int):
|
||||
cases = case_service.fetch_all_cases_in_guild(guild_id)
|
||||
# async def view_all_cases_in_guild(ctx, guild_id: int):
|
||||
# cases = case_service.fetch_all_cases_in_guild(guild_id)
|
||||
|
||||
if not cases:
|
||||
return await ctx.send("No cases found for this guild.")
|
||||
# if not cases:
|
||||
# return await ctx.send("No cases found for this guild.")
|
||||
|
||||
pages_list = [
|
||||
f"Case {case['case_number']}: {case['action_type']} - {case['reason']}"
|
||||
for case in cases
|
||||
]
|
||||
paginator = pages.Paginator(pages=pages_list, loop_pages=True)
|
||||
await paginator.send(ctx)
|
||||
# pages_list = [
|
||||
# f"Case {case['case_number']}: {case['action_type']} - {case['reason']}"
|
||||
# for case in cases
|
||||
# ]
|
||||
# paginator = pages.Paginator(pages=pages_list, loop_pages=True)
|
||||
# await paginator.send(ctx)
|
||||
|
||||
|
||||
async def view_all_cases_by_mod(ctx, guild_id: int, mod_id: int):
|
||||
cases = case_service.fetch_all_cases_by_mod(guild_id, mod_id)
|
||||
# async def view_all_cases_by_mod(ctx, guild_id: int, mod_id: int):
|
||||
# cases = case_service.fetch_all_cases_by_mod(guild_id, mod_id)
|
||||
|
||||
if not cases:
|
||||
return await ctx.send("No cases found for this moderator in this guild.")
|
||||
# if not cases:
|
||||
# return await ctx.send("No cases found for this moderator in this guild.")
|
||||
|
||||
pages_list = [
|
||||
f"Case {case['case_number']}: {case['action_type']} - {case['reason']}"
|
||||
for case in cases
|
||||
]
|
||||
paginator = pages.Paginator(pages=pages_list, loop_pages=True)
|
||||
await paginator.send(ctx)
|
||||
# pages_list = [
|
||||
# f"Case {case['case_number']}: {case['action_type']} - {case['reason']}"
|
||||
# for case in cases
|
||||
# ]
|
||||
# paginator = pages.Paginator(pages=pages_list, loop_pages=True)
|
||||
# await paginator.send(ctx)
|
||||
|
||||
|
||||
async def edit_case_reason(ctx, guild_id: int, case_number: int, new_reason: str):
|
||||
changes = {"reason": new_reason}
|
||||
case_service.edit_case(guild_id, case_number, changes)
|
||||
await ctx.respond(f"Case {case_number} reason updated to: {new_reason}")
|
||||
# async def edit_case_reason(ctx, guild_id: int, case_number: int, new_reason: str):
|
||||
# changes = {"reason": new_reason}
|
||||
# case_service.edit_case(guild_id, case_number, changes)
|
||||
# await ctx.respond(f"Case {case_number} reason updated to: {new_reason}")
|
||||
|
||||
|
||||
async def close_case(ctx, guild_id: int, case_number: int):
|
||||
case_service.close_case(guild_id, case_number)
|
||||
await ctx.respond(f"Case {case_number} has been closed.")
|
||||
# async def close_case(ctx, guild_id: int, case_number: int):
|
||||
# case_service.close_case(guild_id, case_number)
|
||||
# await ctx.respond(f"Case {case_number} has been closed.")
|
||||
|
|
|
@ -83,9 +83,27 @@ class CaseService:
|
|||
SELECT * FROM cases
|
||||
WHERE guild_id = %s AND case_number = %s
|
||||
ORDER BY case_number DESC
|
||||
LIMIT 1
|
||||
"""
|
||||
result = select_query_one(query, (guild_id, case_number))
|
||||
return dict(result) if result else None
|
||||
result = select_query(query, (guild_id, case_number))
|
||||
if result:
|
||||
case = result[0] # Get the first result from the list
|
||||
return {
|
||||
"id": case[0],
|
||||
"guild_id": case[1],
|
||||
"case_number": case[2],
|
||||
"target_id": case[3],
|
||||
"moderator_id": case[4],
|
||||
"action_type": case[5],
|
||||
"reason": case[6],
|
||||
"duration": case[7],
|
||||
"expires_at": case[8],
|
||||
"modlog_message_id": case[9],
|
||||
"is_closed": case[10],
|
||||
"created_at": case[11],
|
||||
"updated_at": case[12],
|
||||
}
|
||||
return None
|
||||
|
||||
def fetch_cases_by_guild(self, guild_id):
|
||||
query = """
|
||||
|
|
Loading…
Reference in a new issue