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:
parent
03e46c0ab5
commit
7384af8d1c
6 changed files with 110 additions and 18 deletions
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
||||
"""
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in a new issue