1
Fork 0
mirror of https://github.com/allthingslinux/tux.git synced 2024-10-02 16:43:12 +00:00

feat(config.py): add commands to get channels and logs for each category

refactor(jail.py, unjail.py, guild_config.py, report.py): rename methods to improve clarity and consistency
fix(error.py): add delete_after parameter to error messages to auto-delete them after 30 seconds
This commit is contained in:
kzndotsh 2024-08-15 03:55:11 +00:00
parent 03e46c0ab5
commit 7384af8d1c
6 changed files with 110 additions and 18 deletions

View file

@ -192,6 +192,98 @@ class Config(commands.Cog):
await interaction.response.send_message(embed=embed, ephemeral=True, delete_after=30)
@app_commands.command(name="config_get_channels")
@app_commands.guild_only()
# @checks.ac_has_pl(7)
@app_commands.checks.has_permissions(administrator=True)
async def config_get_channels(
self,
interaction: discord.Interaction,
) -> None:
"""
Get the channels for each category.
Parameters
----------
interaction : discord.Interaction
The discord interaction object.
"""
if interaction.guild is None:
return
embed = discord.Embed(
title="Config - Channels",
color=discord.Color.blue(),
timestamp=discord.utils.utcnow(),
)
jail_channel_id = await self.db.get_jail_channel_id(interaction.guild.id)
jail_channel = f"<#{jail_channel_id}>" if jail_channel_id else "Not set"
embed.add_field(name="Jail Channel", value=jail_channel, inline=False)
starboard_channel_id = await self.db.get_starboard_channel_id(interaction.guild.id)
starboard_channel = f"<#{starboard_channel_id}>" if starboard_channel_id else "Not set"
embed.add_field(name="Starboard Channel", value=starboard_channel, inline=False)
general_channel_id = await self.db.get_general_channel_id(interaction.guild.id)
general_channel = f"<#{general_channel_id}>" if general_channel_id else "Not set"
embed.add_field(name="General Channel", value=general_channel, inline=False)
await interaction.response.send_message(embed=embed, ephemeral=True, delete_after=30)
@app_commands.command(name="config_get_logs")
@app_commands.guild_only()
# @checks.ac_has_pl(7)
@app_commands.checks.has_permissions(administrator=True)
async def config_get_logs(
self,
interaction: discord.Interaction,
) -> None:
"""
Get the log channels for every category.
Parameters
----------
interaction : discord.Interaction
The discord interaction object.
"""
if interaction.guild is None:
return
embed = discord.Embed(
title="Config - Logs",
color=discord.Color.blue(),
timestamp=discord.utils.utcnow(),
)
join_log_id = await self.db.get_join_log_id(interaction.guild.id)
join_log = f"<#{join_log_id}>" if join_log_id else "Not set"
embed.add_field(name="Join Log", value=join_log, inline=True)
audit_log_id = await self.db.get_audit_log_id(interaction.guild.id)
audit_log = f"<#{audit_log_id}>" if audit_log_id else "Not set"
embed.add_field(name="Audit Log", value=audit_log, inline=True)
mod_log_id = await self.db.get_mod_log_id(interaction.guild.id)
mod_log = f"<#{mod_log_id}>" if mod_log_id else "Not set"
embed.add_field(name="Mod Log", value=mod_log, inline=True)
private_log_id = await self.db.get_private_log_id(interaction.guild.id)
private_log = f"<#{private_log_id}>" if private_log_id else "Not set"
embed.add_field(name="Private Log", value=private_log, inline=True)
report_log_id = await self.db.get_report_log_id(interaction.guild.id)
report_log = f"<#{report_log_id}>" if report_log_id else "Not set"
embed.add_field(name="Report Log", value=report_log, inline=True)
dev_log_id = await self.db.get_dev_log_id(interaction.guild.id)
dev_log = f"<#{dev_log_id}>" if dev_log_id else "Not set"
embed.add_field(name="Dev Log", value=dev_log, inline=True)
await interaction.response.send_message(embed=embed, ephemeral=True, delete_after=30)
async def setup(bot: commands.Bot) -> None:
await bot.add_cog(Config(bot))

View file

@ -120,7 +120,7 @@ class Jail(ModerationCogBase):
if not await self.check_conditions(ctx, target, moderator, "jail"):
return
jail_role_id = await self.config.get_jail_role(ctx.guild.id)
jail_role_id = await self.config.get_jail_role_id(ctx.guild.id)
if not jail_role_id:
await ctx.send("No jail role has been set up for this server.", delete_after=30, ephemeral=True)
return

View file

@ -77,7 +77,7 @@ class Unjail(ModerationCogBase):
logger.warning("Unjail command used outside of a guild context.")
return None
jail_role_id = await self.config.get_jail_role(ctx.guild.id)
jail_role_id = await self.config.get_jail_role_id(ctx.guild.id)
if not jail_role_id:
await ctx.send("No jail role has been set up for this server.", delete_after=30, ephemeral=True)
return None
@ -94,7 +94,7 @@ class Unjail(ModerationCogBase):
logger.warning("Unjail command used outside of a guild context.")
return False
jail_channel_id = await self.config.get_jail_channel(ctx.guild.id)
jail_channel_id = await self.config.get_jail_channel_id(ctx.guild.id)
if not jail_channel_id:
await ctx.send("No jail channel has been set up for this server.", delete_after=30, ephemeral=True)
return False

View file

@ -101,43 +101,43 @@ class GuildConfigController:
logger.debug(f"Retrieved field value for {field}: {value}")
return value
async def get_mod_log_channel(self, guild_id: int) -> int | None:
async def get_mod_log_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "mod_log_id")
async def get_audit_log_channel(self, guild_id: int) -> int | None:
async def get_audit_log_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "audit_log_id")
async def get_join_log_channel(self, guild_id: int) -> int | None:
async def get_join_log_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "join_log_id")
async def get_private_log_channel(self, guild_id: int) -> int | None:
async def get_private_log_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "private_log_id")
async def get_report_log_channel(self, guild_id: int) -> int | None:
async def get_report_log_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "report_log_id")
async def get_dev_log_channel(self, guild_id: int) -> int | None:
async def get_dev_log_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "dev_log_id")
async def get_jail_channel(self, guild_id: int) -> int | None:
async def get_jail_channel_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "jail_channel_id")
async def get_general_channel(self, guild_id: int) -> int | None:
async def get_general_channel_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "general_channel_id")
async def get_starboard_channel(self, guild_id: int) -> int | None:
async def get_starboard_channel_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "starboard_channel_id")
async def get_base_staff_role(self, guild_id: int) -> int | None:
async def get_base_staff_role_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "base_staff_role_id")
async def get_base_member_role(self, guild_id: int) -> int | None:
async def get_base_member_role_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "base_member_role_id")
async def get_jail_role(self, guild_id: int) -> int | None:
async def get_jail_role_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "jail_role_id")
async def get_quarantine_role(self, guild_id: int) -> int | None:
async def get_quarantine_role_id(self, guild_id: int) -> int | None:
return await self.get_guild_config_field_value(guild_id, "quarantine_role_id")
"""

View file

@ -87,7 +87,7 @@ class ErrorHandler(commands.Cog):
if interaction.response.is_done():
await interaction.followup.send(error_message, ephemeral=True)
else:
await interaction.response.send_message(error_message, ephemeral=True)
await interaction.response.send_message(error_message, ephemeral=True, delete_after=30)
if type(error) in error_map:
sentry_sdk.capture_exception(error)

View file

@ -49,7 +49,7 @@ class ReportModal(discord.ui.Modal):
)
try:
report_log_channel_id = await self.config.get_report_log_channel(interaction.guild.id)
report_log_channel_id = await self.config.get_report_log_id(interaction.guild.id)
except Exception as e:
logger.error(f"Failed to get report log channel for guild {interaction.guild.id}. {e}")
await interaction.response.send_message(