misc(aurora): use redbot chat_formatting for errors and warnings
This commit is contained in:
parent
1f4254e9ca
commit
8129fee36a
4 changed files with 48 additions and 47 deletions
|
@ -18,7 +18,7 @@ from discord.ext import tasks
|
|||
from pytimeparse2 import disable_dateutil, parse
|
||||
from redbot.core import app_commands, checks, commands, data_manager
|
||||
from redbot.core.app_commands import Choice
|
||||
from redbot.core.utils.chat_formatting import box
|
||||
from redbot.core.utils.chat_formatting import box, error, warning
|
||||
|
||||
from .importers.galacticbot import ImportGalacticBotView
|
||||
from .importers.aurora import ImportAuroraView
|
||||
|
@ -233,7 +233,7 @@ class Aurora(commands.Cog):
|
|||
blacklist_roles = await config.guild(interaction.guild).blacklist_roles()
|
||||
|
||||
if not blacklist_roles:
|
||||
await interaction.response.send_message(content="There are no blacklist types set for this server!", ephemeral=True)
|
||||
await interaction.response.send_message(content=error("There are no blacklist types set for this server!"), ephemeral=True)
|
||||
return
|
||||
|
||||
matching_role = None
|
||||
|
@ -244,14 +244,14 @@ class Aurora(commands.Cog):
|
|||
break
|
||||
|
||||
if not matching_role:
|
||||
await interaction.response.send_message(content="Please provide a valid blacklist type!", ephemeral=True)
|
||||
await interaction.response.send_message(content=error("Please provide a valid blacklist type!"), ephemeral=True)
|
||||
return
|
||||
|
||||
if not await check_moddable(target, interaction, ['moderate_members', 'manage_roles']):
|
||||
return
|
||||
|
||||
if role in [role.id for role in target.roles]:
|
||||
await interaction.response.send_message(content=f"{target.mention} already has the blacklist role!", ephemeral=True)
|
||||
await interaction.response.send_message(content=error(f"{target.mention} already has the blacklist role!"), ephemeral=True)
|
||||
return
|
||||
|
||||
if silent is None:
|
||||
|
@ -292,17 +292,17 @@ class Aurora(commands.Cog):
|
|||
return
|
||||
|
||||
if target.is_timed_out() is True:
|
||||
await interaction.response.send_message(f"{target.mention} is already muted!", allowed_mentions=discord.AllowedMentions(users=False), ephemeral=True)
|
||||
await interaction.response.send_message(error(f"{target.mention} is already muted!"), allowed_mentions=discord.AllowedMentions(users=False), ephemeral=True)
|
||||
return
|
||||
|
||||
try:
|
||||
parsed_time = parse(sval=duration, as_timedelta=True, raise_exception=True)
|
||||
except ValueError:
|
||||
await interaction.response.send_message("Please provide a valid duration!", ephemeral=True)
|
||||
await interaction.response.send_message(error("Please provide a valid duration!"), ephemeral=True)
|
||||
return
|
||||
|
||||
if parsed_time.total_seconds() / 1000 > 2419200000:
|
||||
await interaction.response.send_message("Please provide a duration that is less than 28 days.")
|
||||
await interaction.response.send_message(error("Please provide a duration that is less than 28 days."))
|
||||
return
|
||||
|
||||
await target.timeout(parsed_time, reason=f"Muted by {interaction.user.id} for: {reason}")
|
||||
|
@ -341,7 +341,7 @@ class Aurora(commands.Cog):
|
|||
return
|
||||
|
||||
if target.is_timed_out() is False:
|
||||
await interaction.response.send_message(f"{target.mention} is not muted!", allowed_mentions=discord.AllowedMentions(users=False), ephemeral=True)
|
||||
await interaction.response.send_message(error(f"{target.mention} is not muted!"), allowed_mentions=discord.AllowedMentions(users=False), ephemeral=True)
|
||||
return
|
||||
|
||||
if reason:
|
||||
|
@ -437,7 +437,7 @@ class Aurora(commands.Cog):
|
|||
|
||||
try:
|
||||
await interaction.guild.fetch_ban(target)
|
||||
await interaction.response.send_message(content=f"{target.mention} is already banned!", ephemeral=True)
|
||||
await interaction.response.send_message(content=error(f"{target.mention} is already banned!"), ephemeral=True)
|
||||
return
|
||||
except discord.errors.NotFound:
|
||||
pass
|
||||
|
@ -446,7 +446,7 @@ class Aurora(commands.Cog):
|
|||
try:
|
||||
parsed_time = parse(sval=duration, as_timedelta=True, raise_exception=True)
|
||||
except ValueError:
|
||||
await interaction.response.send_message("Please provide a valid duration!", ephemeral=True)
|
||||
await interaction.response.send_message(error("Please provide a valid duration!"), ephemeral=True)
|
||||
return
|
||||
|
||||
await interaction.response.send_message(content=f"{target.mention} has been banned for {humanize.precisedelta(parsed_time)}!\n**Reason** - `{reason}`")
|
||||
|
@ -504,7 +504,7 @@ class Aurora(commands.Cog):
|
|||
try:
|
||||
await interaction.guild.fetch_ban(target)
|
||||
except discord.errors.NotFound:
|
||||
await interaction.response.send_message(content=f"{target.mention} is not banned!", ephemeral=True)
|
||||
await interaction.response.send_message(content=error(f"{target.mention} is not banned!"), ephemeral=True)
|
||||
return
|
||||
|
||||
if reason:
|
||||
|
@ -576,7 +576,7 @@ class Aurora(commands.Cog):
|
|||
|
||||
permissions = check_permissions(interaction.client.user, ['embed_links'], interaction)
|
||||
if permissions:
|
||||
await interaction.followup.send(f"I do not have the `{permissions}` permission, required for this action.", ephemeral=True)
|
||||
await interaction.followup.send(error(f"I do not have the `{permissions}` permission, required for this action."), ephemeral=True)
|
||||
return
|
||||
|
||||
database = connect()
|
||||
|
@ -602,7 +602,7 @@ class Aurora(commands.Cog):
|
|||
|
||||
os.remove(filename)
|
||||
except json.JSONDecodeError as e:
|
||||
await interaction.followup.send(content=f"An error occured while exporting the moderation history.\nError:\n" + box(e, 'py'), ephemeral=ephemeral)
|
||||
await interaction.followup.send(content=error(f"An error occured while exporting the moderation history.\nError:\n") + box(e, 'py'), ephemeral=ephemeral)
|
||||
cursor.close()
|
||||
database.close()
|
||||
return
|
||||
|
@ -699,7 +699,7 @@ class Aurora(commands.Cog):
|
|||
Reason for resolving case"""
|
||||
permissions = check_permissions(interaction.client.user, ['embed_links', 'moderate_members', 'ban_members'], interaction)
|
||||
if permissions:
|
||||
await interaction.response.send_message(f"I do not have the `{permissions}` permission, required for this action.", ephemeral=True)
|
||||
await interaction.response.send_message(error(f"I do not have the `{permissions}` permission, required for this action."), ephemeral=True)
|
||||
return
|
||||
|
||||
database = connect()
|
||||
|
@ -709,14 +709,14 @@ class Aurora(commands.Cog):
|
|||
cursor.execute(query_1, (case,))
|
||||
result_1 = cursor.fetchone()
|
||||
if result_1 is None or case == 0:
|
||||
await interaction.response.send_message(content=f"There is no moderation with a case number of {case}.", ephemeral=True)
|
||||
await interaction.response.send_message(content=error(f"There is no moderation with a case number of {case}."), ephemeral=True)
|
||||
return
|
||||
|
||||
query_2 = f"SELECT * FROM moderation_{interaction.guild.id} WHERE moderation_id = ? AND resolved = 0;"
|
||||
cursor.execute(query_2, (case,))
|
||||
result_2 = cursor.fetchone()
|
||||
if result_2 is None:
|
||||
await interaction.response.send_message(content=f"This moderation has already been resolved!\nUse `/case {case}` for more information.", ephemeral=True)
|
||||
await interaction.response.send_message(content=error(f"This moderation has already been resolved!\nUse `/case {case}` for more information."), ephemeral=True)
|
||||
return
|
||||
|
||||
case_dict = generate_dict(result_2)
|
||||
|
@ -725,7 +725,7 @@ class Aurora(commands.Cog):
|
|||
|
||||
changes: list = case_dict['changes']
|
||||
if len(changes) > 25:
|
||||
await interaction.response.send_message(content="Due to limitations with Discord's embed system, you cannot edit a case more than 25 times.", ephemeral=True)
|
||||
await interaction.response.send_message(content=error("Due to limitations with Discord's embed system, you cannot edit a case more than 25 times."), ephemeral=True)
|
||||
return
|
||||
if not changes:
|
||||
changes.append(
|
||||
|
@ -746,7 +746,7 @@ class Aurora(commands.Cog):
|
|||
)
|
||||
|
||||
if case_dict['moderation_type'] in ['UNMUTE', 'UNBAN']:
|
||||
await interaction.response.send_message(content="You cannot resolve this type of moderation!", ephemeral=True)
|
||||
await interaction.response.send_message(content=error("You cannot resolve this type of moderation!"), ephemeral=True)
|
||||
|
||||
if case_dict['moderation_type'] in ['MUTE', 'TEMPBAN', 'BAN']:
|
||||
if case_dict['moderation_type'] == 'MUTE':
|
||||
|
@ -799,7 +799,7 @@ class Aurora(commands.Cog):
|
|||
Export the case to a JSON file or codeblock"""
|
||||
permissions = check_permissions(interaction.client.user, ['embed_links'], interaction)
|
||||
if permissions:
|
||||
await interaction.response.send_message(f"I do not have the `{permissions}` permission, required for this action.", ephemeral=True)
|
||||
await interaction.response.send_message(error(f"I do not have the `{permissions}` permission, required for this action."), ephemeral=True)
|
||||
return
|
||||
|
||||
if ephemeral is None:
|
||||
|
@ -818,7 +818,7 @@ class Aurora(commands.Cog):
|
|||
json.dump(case_dict, f, indent=2)
|
||||
|
||||
if export.value == 'codeblock':
|
||||
content = f"Case #{case:,} exported.\n*Case was too large to export as codeblock, so it has been uploaded as a `.json` file.*"
|
||||
content = f"Case #{case:,} exported.\n" + warning("Case was too large to export as codeblock, so it has been uploaded as a `.json` file.")
|
||||
else:
|
||||
content = f"Case #{case:,} exported."
|
||||
|
||||
|
@ -854,7 +854,7 @@ class Aurora(commands.Cog):
|
|||
What is the new duration? Does not reapply the moderation if it has already expired."""
|
||||
permissions = check_permissions(interaction.client.user, ['embed_links'], interaction)
|
||||
if permissions:
|
||||
await interaction.response.send_message(f"I do not have the `{permissions}` permission, required for this action.", ephemeral=True)
|
||||
await interaction.response.send_message(error(f"I do not have the `{permissions}` permission, required for this action."), ephemeral=True)
|
||||
return
|
||||
|
||||
if case != 0:
|
||||
|
@ -865,14 +865,14 @@ class Aurora(commands.Cog):
|
|||
try:
|
||||
parsed_time = parse(sval=duration, as_timedelta=True, raise_exception=True)
|
||||
except ValueError:
|
||||
await interaction.response.send_message("Please provide a valid duration!", ephemeral=True)
|
||||
await interaction.response.send_message(error("Please provide a valid duration!"), ephemeral=True)
|
||||
return
|
||||
|
||||
end_timestamp = case_dict['timestamp'] + parsed_time.total_seconds()
|
||||
|
||||
if case_dict['moderation_type'] == 'MUTE':
|
||||
if (time.time() - case_dict['timestamp']) + parsed_time.total_seconds() > 2419200:
|
||||
await interaction.response.send_message("Please provide a duration that is less than 28 days from the initial moderation.")
|
||||
await interaction.response.send_message(error("Please provide a duration that is less than 28 days from the initial moderation."))
|
||||
return
|
||||
|
||||
try:
|
||||
|
@ -884,7 +884,7 @@ class Aurora(commands.Cog):
|
|||
|
||||
changes: list = case_dict['changes']
|
||||
if len(changes) > 25:
|
||||
await interaction.response.send_message(content="Due to limitations with Discord's embed system, you cannot edit a case more than 25 times.", ephemeral=True)
|
||||
await interaction.response.send_message(content=error("Due to limitations with Discord's embed system, you cannot edit a case more than 25 times."), ephemeral=True)
|
||||
return
|
||||
if not changes:
|
||||
changes.append(
|
||||
|
@ -940,7 +940,7 @@ class Aurora(commands.Cog):
|
|||
cursor.close()
|
||||
database.close()
|
||||
return
|
||||
await interaction.response.send_message(content=f"No case with case number `{case}` found.", ephemeral=True)
|
||||
await interaction.response.send_message(content=error(f"No case with case number `{case}` found."), ephemeral=True)
|
||||
|
||||
@tasks.loop(minutes=1)
|
||||
async def handle_expiry(self):
|
||||
|
@ -1101,10 +1101,10 @@ class Aurora(commands.Cog):
|
|||
async def auroraset_user_history_inline_pagesize(self, ctx: commands.Context, pagesize: int):
|
||||
"""Set the amount of cases to display per page."""
|
||||
if pagesize > 20:
|
||||
await ctx.send("Pagesize cannot be greater than 20!")
|
||||
await ctx.send(error("Pagesize cannot be greater than 20!"))
|
||||
return
|
||||
if pagesize < 1:
|
||||
await ctx.send("Pagesize cannot be less than 1!")
|
||||
await ctx.send(error("Pagesize cannot be less than 1!"))
|
||||
return
|
||||
await config.user(ctx.author).history_inline_pagesize.set(pagesize)
|
||||
await ctx.send(f"Inline pagesize set to {await config.user(ctx.author).history_inline_pagesize()}")
|
||||
|
@ -1181,7 +1181,7 @@ class Aurora(commands.Cog):
|
|||
"""Add a role to the immune roles list."""
|
||||
immune_roles: list = await config.guild(ctx.guild).immune_roles()
|
||||
if role.id in immune_roles:
|
||||
await ctx.send("Role is already immune!")
|
||||
await ctx.send(error("Role is already immune!"))
|
||||
return
|
||||
immune_roles.append(role.id)
|
||||
await config.guild(ctx.guild).immune_roles.set(immune_roles)
|
||||
|
@ -1193,7 +1193,7 @@ class Aurora(commands.Cog):
|
|||
"""Remove a role from the immune roles list."""
|
||||
immune_roles: list = await config.guild(ctx.guild).immune_roles()
|
||||
if role.id not in immune_roles:
|
||||
await ctx.send("Role is not immune!")
|
||||
await ctx.send(error("Role is not immune!"))
|
||||
return
|
||||
immune_roles.remove(role.id)
|
||||
await config.guild(ctx.guild).immune_roles.set(immune_roles)
|
||||
|
@ -1228,13 +1228,13 @@ class Aurora(commands.Cog):
|
|||
blacklist_roles: list = await config.guild(ctx.guild).blacklist_roles()
|
||||
for blacklist_role in blacklist_roles:
|
||||
if role.id == blacklist_role['role']:
|
||||
await ctx.send("Role already has an associated blacklist type!")
|
||||
await ctx.send(error("Role already has an associated blacklist type!"))
|
||||
return
|
||||
|
||||
try:
|
||||
parsed_time = parse(sval=duration, as_timedelta=True, raise_exception=True)
|
||||
except ValueError:
|
||||
await ctx.send("Please provide a valid duration!")
|
||||
await ctx.send(error("Please provide a valid duration!"))
|
||||
return
|
||||
|
||||
blacklist_roles.append(
|
||||
|
@ -1257,7 +1257,7 @@ class Aurora(commands.Cog):
|
|||
await config.guild(ctx.guild).blacklist_roles.set(blacklist_roles)
|
||||
await ctx.send(f"Role {role.mention} removed from blacklist types.", allowed_mentions=discord.AllowedMentions.none())
|
||||
return
|
||||
await ctx.send("Role does not have an associated blacklist type!")
|
||||
await ctx.send(error("Role does not have an associated blacklist type!"))
|
||||
|
||||
@auroraset_blacklist.command(name='list')
|
||||
@checks.admin()
|
||||
|
@ -1308,7 +1308,7 @@ class Aurora(commands.Cog):
|
|||
await ctx.send(f"Logging channel set to {channel.mention}.")
|
||||
else:
|
||||
await config.guild(ctx.guild).log_channel.set(" ")
|
||||
await ctx.send("Logging channel disabled.")
|
||||
await ctx.send(warning("Logging channel disabled."))
|
||||
|
||||
@auroraset.command(name="showmoderator")
|
||||
@checks.admin()
|
||||
|
@ -1327,20 +1327,20 @@ class Aurora(commands.Cog):
|
|||
async def auroraset_import_aurora(self, ctx: commands.Context):
|
||||
"""Import moderations from another bot using Aurora."""
|
||||
if ctx.message.attachments and ctx.message.attachments[0].content_type == 'application/json; charset=utf-8':
|
||||
message = await ctx.send("Are you sure you want to import moderations from another bot?\n**This will overwrite any moderations that already exist in this guild's moderation table.**\n*The import process will block the rest of your bot until it is complete.*")
|
||||
message = await ctx.send(warning("Are you sure you want to import moderations from another bot?\n**This will overwrite any moderations that already exist in this guild's moderation table.**\n*The import process will block the rest of your bot until it is complete.*"))
|
||||
await message.edit(view=ImportAuroraView(60, ctx, message))
|
||||
else:
|
||||
await ctx.send("Please provide a valid Aurora export file.")
|
||||
await ctx.send(error("Please provide a valid Aurora export file."))
|
||||
|
||||
@auroraset_import.command(name="galacticbot")
|
||||
@checks.admin()
|
||||
async def auroraset_import_galacticbot(self, ctx: commands.Context):
|
||||
"""Import moderations from GalacticBot."""
|
||||
if ctx.message.attachments and ctx.message.attachments[0].content_type == 'application/json; charset=utf-8':
|
||||
message = await ctx.send("Are you sure you want to import GalacticBot moderations?\n**This will overwrite any moderations that already exist in this guild's moderation table.**\n*The import process will block the rest of your bot until it is complete.*")
|
||||
message = await ctx.send(warning("Are you sure you want to import GalacticBot moderations?\n**This will overwrite any moderations that already exist in this guild's moderation table.**\n*The import process will block the rest of your bot until it is complete.*"))
|
||||
await message.edit(view=ImportGalacticBotView(60, ctx, message))
|
||||
else:
|
||||
await ctx.send("Please provide a valid GalacticBot moderation export file.")
|
||||
await ctx.send(error("Please provide a valid GalacticBot moderation export file."))
|
||||
|
||||
@commands.command(aliases=["tdc"])
|
||||
async def timedeltaconvert(self, ctx: commands.Context, *, duration: str):
|
||||
|
@ -1354,4 +1354,4 @@ class Aurora(commands.Cog):
|
|||
parsed_time = parse(duration, as_timedelta=True, raise_exception=True)
|
||||
await ctx.send(f"`{str(parsed_time)}`")
|
||||
except ValueError:
|
||||
await ctx.send("Please provide a convertible value!")
|
||||
await ctx.send(error("Please provide a convertible value!"))
|
||||
|
|
|
@ -4,7 +4,7 @@ from typing import Dict
|
|||
|
||||
from discord import ButtonStyle, Interaction, Message, ui
|
||||
from redbot.core import commands
|
||||
from redbot.core.utils.chat_formatting import box
|
||||
from redbot.core.utils.chat_formatting import box, warning
|
||||
|
||||
from ..utilities.database import connect, create_guild_table, mysql_log
|
||||
|
||||
|
@ -101,7 +101,7 @@ class ImportAuroraView(ui.View):
|
|||
await interaction.edit_original_response(content="Import complete.")
|
||||
if failed_cases:
|
||||
await interaction.edit_original_response(
|
||||
content=f"Import complete.\n*Failed to import the following cases:*\n" + box(failed_cases)
|
||||
content=f"Import complete.\n" + warning("Failed to import the following cases:\n") + box(failed_cases)
|
||||
)
|
||||
|
||||
@ui.button(label="No", style=ButtonStyle.danger)
|
||||
|
|
|
@ -3,7 +3,7 @@ from datetime import timedelta
|
|||
|
||||
from discord import ButtonStyle, Interaction, Message, ui
|
||||
from redbot.core import commands
|
||||
from redbot.core.utils.chat_formatting import box
|
||||
from redbot.core.utils.chat_formatting import box, warning
|
||||
|
||||
from ..utilities.database import connect, create_guild_table, mysql_log
|
||||
|
||||
|
@ -137,7 +137,7 @@ class ImportGalacticBotView(ui.View):
|
|||
|
||||
await interaction.edit_original_response(content="Import complete.")
|
||||
if failed_cases:
|
||||
await interaction.edit_original_response(content=f"Import complete.\n*Failed to import the following cases:*\n" + box(failed_cases))
|
||||
await interaction.edit_original_response(content=f"Import complete.\n" + warning("Failed to import the following cases:\n") + box(failed_cases))
|
||||
|
||||
@ui.button(label="No", style=ButtonStyle.danger)
|
||||
async def import_button_n(self, interaction: Interaction, button: ui.Button): # pylint: disable=unused-argument
|
||||
|
|
|
@ -7,6 +7,7 @@ from typing import Union
|
|||
from discord import Guild, Interaction, Member, User
|
||||
from discord.errors import Forbidden, NotFound
|
||||
from redbot.core import commands
|
||||
from redbot.core.utils.chat_formatting import error
|
||||
|
||||
from .config import config
|
||||
|
||||
|
@ -45,7 +46,7 @@ async def check_moddable(
|
|||
"""Checks if a moderator can moderate a target."""
|
||||
if check_permissions(interaction.client.user, permissions, guild=interaction.guild):
|
||||
await interaction.response.send_message(
|
||||
f"I do not have the `{permissions}` permission, required for this action.",
|
||||
error(f"I do not have the `{permissions}` permission, required for this action."),
|
||||
ephemeral=True,
|
||||
)
|
||||
return False
|
||||
|
@ -53,7 +54,7 @@ async def check_moddable(
|
|||
if await config.guild(interaction.guild).use_discord_permissions() is True:
|
||||
if check_permissions(interaction.user, permissions, guild=interaction.guild):
|
||||
await interaction.response.send_message(
|
||||
f"You do not have the `{permissions}` permission, required for this action.",
|
||||
error(f"You do not have the `{permissions}` permission, required for this action."),
|
||||
ephemeral=True,
|
||||
)
|
||||
return False
|
||||
|
@ -73,7 +74,7 @@ async def check_moddable(
|
|||
if isinstance(target, Member):
|
||||
if interaction.user.top_role <= target.top_role:
|
||||
await interaction.response.send_message(
|
||||
content="You cannot moderate members with a higher role than you!",
|
||||
content=error("You cannot moderate members with a higher role than you!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return False
|
||||
|
@ -83,7 +84,7 @@ async def check_moddable(
|
|||
<= target.top_role
|
||||
):
|
||||
await interaction.response.send_message(
|
||||
content="You cannot moderate members with a role higher than the bot!",
|
||||
content=error("You cannot moderate members with a role higher than the bot!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return False
|
||||
|
@ -93,7 +94,7 @@ async def check_moddable(
|
|||
for role in target.roles:
|
||||
if role.id in immune_roles:
|
||||
await interaction.response.send_message(
|
||||
content="You cannot moderate members with an immune role!",
|
||||
content=error("You cannot moderate members with an immune role!"),
|
||||
ephemeral=True,
|
||||
)
|
||||
return False
|
||||
|
|
Loading…
Reference in a new issue