Compare commits

...

3 commits

Author SHA1 Message Date
35ad7a77a7
fix(aurora): require ids to be ints in some utlis functions
All checks were successful
Actions / Lint Code (Pylint) (push) Successful in 51s
Actions / Build Documentation (MkDocs) (push) Successful in 14s
2024-02-13 23:19:41 +00:00
f7d2f1a564
misc(aurora): less restrictive type requirements for some utils functions 2024-02-13 23:18:44 +00:00
db7c06b044
misc(aurora): adding typechecks to return values in utils 2024-02-13 23:02:13 +00:00
3 changed files with 32 additions and 32 deletions

View file

@ -1023,11 +1023,11 @@ class Aurora(commands.Cog):
if case["target_id"] not in memory_dict:
if case["target_type"] == "USER":
memory_dict[str(case["target_id"])] = await fetch_user_dict(
interaction, case["target_id"]
interaction.client, case["target_id"]
)
elif case["target_type"] == "CHANNEL":
memory_dict[str(case["target_id"])] = await fetch_channel_dict(
interaction, case["target_id"]
interaction.guild, case["target_id"]
)
target_user = memory_dict[str(case["target_id"])]
@ -1042,7 +1042,7 @@ class Aurora(commands.Cog):
if case["moderator_id"] not in memory_dict:
memory_dict[str(case["moderator_id"])] = await fetch_user_dict(
interaction, case["moderator_id"]
interaction.client, case["moderator_id"]
)
moderator_user = memory_dict[str(case["moderator_id"])]
moderator_name = (

View file

@ -116,20 +116,20 @@ async def log_factory(
"""
if resolved:
if case_dict["target_type"] == "USER":
target_user = await fetch_user_dict(interaction, case_dict["target_id"])
target_user = await fetch_user_dict(interaction.client, case_dict["target_id"])
target_name = (
f"`{target_user['name']}`"
if target_user["discriminator"] == "0"
else f"`{target_user['name']}#{target_user['discriminator']}`"
)
elif case_dict["target_type"] == "CHANNEL":
target_user = await fetch_channel_dict(interaction, case_dict["target_id"])
target_user = await fetch_channel_dict(interaction.guild, case_dict["target_id"])
if target_user["mention"]:
target_name = f"{target_user['mention']}"
else:
target_name = f"`{target_user['name']}`"
moderator_user = await fetch_user_dict(interaction, case_dict["moderator_id"])
moderator_user = await fetch_user_dict(interaction.client, case_dict["moderator_id"])
moderator_name = (
f"`{moderator_user['name']}`"
if moderator_user["discriminator"] == "0"
@ -165,7 +165,7 @@ async def log_factory(
embed.add_field(name="Reason", value=box(case_dict["reason"]), inline=False)
resolved_user = await fetch_user_dict(interaction, case_dict["resolved_by"])
resolved_user = await fetch_user_dict(interaction.client, case_dict["resolved_by"])
resolved_name = (
resolved_user["name"]
if resolved_user["discriminator"] == "0"
@ -179,20 +179,20 @@ async def log_factory(
)
else:
if case_dict["target_type"] == "USER":
target_user = await fetch_user_dict(interaction, case_dict["target_id"])
target_user = await fetch_user_dict(interaction.client, case_dict["target_id"])
target_name = (
f"`{target_user['name']}`"
if target_user["discriminator"] == "0"
else f"`{target_user['name']}#{target_user['discriminator']}`"
)
elif case_dict["target_type"] == "CHANNEL":
target_user = await fetch_channel_dict(interaction, case_dict["target_id"])
target_user = await fetch_channel_dict(interaction.guild, case_dict["target_id"])
if target_user["mention"]:
target_name = target_user["mention"]
else:
target_name = f"`{target_user['name']}`"
moderator_user = await fetch_user_dict(interaction, case_dict["moderator_id"])
moderator_user = await fetch_user_dict(interaction.client, case_dict["moderator_id"])
moderator_name = (
f"`{moderator_user['name']}`"
if moderator_user["discriminator"] == "0"
@ -232,20 +232,20 @@ async def case_factory(interaction: Interaction, case_dict: dict) -> Embed:
case_dict (dict): The case dictionary.
"""
if case_dict["target_type"] == "USER":
target_user = await fetch_user_dict(interaction, case_dict["target_id"])
target_user = await fetch_user_dict(interaction.client, case_dict["target_id"])
target_name = (
f"`{target_user['name']}`"
if target_user["discriminator"] == "0"
else f"`{target_user['name']}#{target_user['discriminator']}`"
)
elif case_dict["target_type"] == "CHANNEL":
target_user = await fetch_channel_dict(interaction, case_dict["target_id"])
target_user = await fetch_channel_dict(interaction.guild, case_dict["target_id"])
if target_user["mention"]:
target_name = f"{target_user['mention']}"
else:
target_name = f"`{target_user['name']}`"
moderator_user = await fetch_user_dict(interaction, case_dict["moderator_id"])
moderator_user = await fetch_user_dict(interaction.client, case_dict["moderator_id"])
moderator_name = (
f"`{moderator_user['name']}`"
if moderator_user["discriminator"] == "0"
@ -289,7 +289,7 @@ async def case_factory(interaction: Interaction, case_dict: dict) -> Embed:
embed.add_field(name="Reason", value=box(case_dict["reason"]), inline=False)
if case_dict["resolved"] == 1:
resolved_user = await fetch_user_dict(interaction, case_dict["resolved_by"])
resolved_user = await fetch_user_dict(interaction.client, case_dict["resolved_by"])
resolved_name = (
f"`{resolved_user['name']}`"
if resolved_user["discriminator"] == "0"
@ -322,7 +322,7 @@ async def changes_factory(interaction: Interaction, case_dict: dict) -> Embed:
for change in case_dict["changes"]:
if change["user_id"] not in memory_dict:
memory_dict[str(change["user_id"])] = await fetch_user_dict(
interaction, change["user_id"]
interaction.client, change["user_id"]
)
user = memory_dict[str(change["user_id"])]
@ -369,7 +369,7 @@ async def evidenceformat_factory(interaction: Interaction, case_dict: dict) -> s
case_dict (dict): The case dictionary.
"""
if case_dict["target_type"] == "USER":
target_user = await fetch_user_dict(interaction, case_dict["target_id"])
target_user = await fetch_user_dict(interaction.client, case_dict["target_id"])
target_name = (
target_user["name"]
if target_user["discriminator"] == "0"
@ -377,10 +377,10 @@ async def evidenceformat_factory(interaction: Interaction, case_dict: dict) -> s
)
elif case_dict["target_type"] == "CHANNEL":
target_user = await fetch_channel_dict(interaction, case_dict["target_id"])
target_user = await fetch_channel_dict(interaction.guild, case_dict["target_id"])
target_name = target_user["name"]
moderator_user = await fetch_user_dict(interaction, case_dict["moderator_id"])
moderator_user = await fetch_user_dict(interaction.client, case_dict["moderator_id"])
moderator_name = (
moderator_user["name"]
if moderator_user["discriminator"] == "0"

View file

@ -17,7 +17,7 @@ def check_permissions(
permissions: list,
ctx: Union[commands.Context, Interaction] = None,
guild: Guild = None,
):
) -> Union[bool, str]:
"""Checks if a user has a specific permission (or a list of permissions) in a channel."""
if ctx:
member = ctx.guild.get_member(user.id)
@ -42,7 +42,7 @@ def check_permissions(
async def check_moddable(
target: Union[User, Member], interaction: Interaction, permissions: list
):
) -> bool:
"""Checks if a moderator can moderate a target."""
if check_permissions(interaction.client.user, permissions, guild=interaction.guild):
await interaction.response.send_message(
@ -124,8 +124,8 @@ async def get_next_case_number(guild_id: str, cursor=None) -> int:
return (result[0] + 1) if result else 1
def generate_dict(result):
case: dict = {
def generate_dict(result) -> dict:
case = {
"moderation_id": result[0],
"timestamp": result[1],
"moderation_type": result[2],
@ -146,16 +146,16 @@ def generate_dict(result):
return case
async def fetch_user_dict(interaction: Interaction, user_id: str):
async def fetch_user_dict(client: commands.Bot, user_id: int) -> dict:
"""This function returns a dictionary containing either user information or a standard deleted user template."""
if user_id == "?":
user_dict = {"id": "?", "name": "Unknown User", "discriminator": "0"}
else:
try:
user = interaction.client.get_user(user_id)
user = client.get_user(int(user_id))
if user is None:
user = await interaction.client.fetch_user(user_id)
user_dict = {"id": user_id, "name": "Unknown User", "discriminator": "0"}
user_dict = {
"id": user.id,
@ -173,12 +173,12 @@ async def fetch_user_dict(interaction: Interaction, user_id: str):
return user_dict
async def fetch_channel_dict(interaction: Interaction, channel_id: str):
async def fetch_channel_dict(guild: Guild, channel_id: int) -> dict:
"""This function returns a dictionary containing either channel information or a standard deleted channel template."""
try:
channel = interaction.guild.get_channel(channel_id)
channel = guild.get_channel(int(channel_id))
if not channel:
channel = await interaction.guild.fetch_channel(channel_id)
channel = await guild.fetch_channel(channel_id)
channel_dict = {
"id": channel.id,
@ -192,9 +192,9 @@ async def fetch_channel_dict(interaction: Interaction, channel_id: str):
return channel_dict
async def fetch_role_dict(interaction: Interaction, role_id: str):
async def fetch_role_dict(guild: Guild, role_id: int) -> dict:
"""This function returns a dictionary containing either role information or a standard deleted role template."""
role = interaction.guild.get_role(role_id)
role = guild.get_role(int(role_id))
if not role:
role_dict = {"id": role_id, "name": "Deleted Role"}
@ -203,7 +203,7 @@ async def fetch_role_dict(interaction: Interaction, role_id: str):
return role_dict
async def log(interaction: Interaction, moderation_id: int, resolved: bool = False):
async def log(interaction: Interaction, moderation_id: int, resolved: bool = False) -> None:
"""This function sends a message to the guild's configured logging channel when an infraction takes place."""
from .database import fetch_case
from .factory import log_factory
@ -223,7 +223,7 @@ async def log(interaction: Interaction, moderation_id: int, resolved: bool = Fal
return
async def send_evidenceformat(interaction: Interaction, case_dict: dict):
async def send_evidenceformat(interaction: Interaction, case_dict: dict) -> None:
"""This function sends an ephemeral message to the moderator who took the moderation action, with a pre-made codeblock for use in the mod-evidence channel."""
from .factory import evidenceformat_factory