describe slash command parameters and use english names in code
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
52bbf74e47
commit
75a1524f0e
2 files changed
+101
-89
No files matched your search
+92
-82
@@ -359,102 +359,108 @@ class Info(commands.Cog):
|
||||
@app_commands.checks.bot_has_permissions(embed_links=True)
|
||||
@app_commands.checks.cooldown(1, 2)
|
||||
@guild_group.command(name="rolle", description="Hent informasjon om en rolle på serveren")
|
||||
async def guild_role(self, interaction: discord.Interaction, rolle: discord.Role):
|
||||
@app_commands.rename(role="rolle")
|
||||
@app_commands.describe(role="Rollen du vil se informasjon om")
|
||||
async def guild_role(self, interaction: discord.Interaction, role: discord.Role):
|
||||
"""
|
||||
Get information about a role
|
||||
|
||||
Parameters
|
||||
----------
|
||||
interaction (discord.Interaction): Slash command context object
|
||||
rolle (discord.Role): Role to fetch information about
|
||||
role (discord.Role): Role to fetch information about
|
||||
"""
|
||||
|
||||
if rolle.is_default():
|
||||
if role.is_default():
|
||||
embed = embed_templates.error_warning("Skriv inn en annen rolle enn `@everyone`")
|
||||
return await interaction.response.send_message(embed=embed)
|
||||
|
||||
# Timestamp and days since creation
|
||||
created_at_timestamp = discord.utils.format_dt(rolle.created_at, style="F")
|
||||
since_created_days = (interaction.created_at - rolle.created_at).days
|
||||
created_at_timestamp = discord.utils.format_dt(role.created_at, style="F")
|
||||
since_created_days = (interaction.created_at - role.created_at).days
|
||||
|
||||
# List of members with the role
|
||||
members = self.construct_member_string(rolle.members)
|
||||
members = self.construct_member_string(role.members)
|
||||
members = members if len(members) < 1024 else "For mange medlemmer for å vise her"
|
||||
|
||||
# List of permissions
|
||||
permissions = ", ".join([permission for permission, value in iter(rolle.permissions) if value is True])
|
||||
permissions = ", ".join([permission for permission, value in iter(role.permissions) if value is True])
|
||||
|
||||
embed = discord.Embed(title=rolle.name, description=f"{rolle.mention}\n**ID:** {rolle.id}", color=rolle.color)
|
||||
embed.set_author(name=rolle.guild.name, icon_url=rolle.guild.icon)
|
||||
embed.add_field(name="Fargekode", value=str(rolle.color))
|
||||
embed = discord.Embed(title=role.name, description=f"{role.mention}\n**ID:** {role.id}", color=role.color)
|
||||
embed.set_author(name=role.guild.name, icon_url=role.guild.icon)
|
||||
embed.add_field(name="Fargekode", value=str(role.color))
|
||||
embed.add_field(
|
||||
name="Opprettet",
|
||||
value=f"{created_at_timestamp}\n{since_created_days} "
|
||||
+ f'{"dager" if since_created_days != 1 else "dag"} siden',
|
||||
)
|
||||
embed.add_field(name="Posisjon", value=rolle.position)
|
||||
embed.add_field(name="Nevnbar", value="Ja" if rolle.mentionable else "Nei")
|
||||
embed.add_field(name="Vises separat i medlemsliste", value="Ja" if rolle.hoist else "Nei")
|
||||
embed.add_field(name="Posisjon", value=role.position)
|
||||
embed.add_field(name="Nevnbar", value="Ja" if role.mentionable else "Nei")
|
||||
embed.add_field(name="Vises separat i medlemsliste", value="Ja" if role.hoist else "Nei")
|
||||
if permissions:
|
||||
embed.add_field(name="Tillatelser", value=permissions, inline=False)
|
||||
embed.add_field(name=f"Brukere med rollen ({len(rolle.members)})", value=members, inline=False)
|
||||
embed.add_field(name=f"Brukere med rollen ({len(role.members)})", value=members, inline=False)
|
||||
await interaction.response.send_message(embed=embed)
|
||||
|
||||
@app_commands.checks.bot_has_permissions(embed_links=True)
|
||||
@app_commands.checks.cooldown(1, 2)
|
||||
@guild_group.command(name="tekstkanal", description="Hent informasjon om en tekstkanal")
|
||||
async def guild_text_channel(self, interaction: discord.Interaction, kanal: discord.TextChannel):
|
||||
@app_commands.rename(channel="kanal")
|
||||
@app_commands.describe(channel="Tekstkanalen du vil se informasjon om")
|
||||
async def guild_text_channel(self, interaction: discord.Interaction, channel: discord.TextChannel):
|
||||
"""
|
||||
Get information about a text channel
|
||||
|
||||
Parameters
|
||||
----------
|
||||
interaction (discord.Interaction): Slash command context object
|
||||
kanal (discord.TextChannel): Text channel to fetch information about
|
||||
channel (discord.TextChannel): Text channel to fetch information about
|
||||
"""
|
||||
|
||||
members = self.construct_member_string(kanal.members)
|
||||
members = self.construct_member_string(channel.members)
|
||||
if len(members) > 1024:
|
||||
members = "For mange for å vise her"
|
||||
|
||||
embed = discord.Embed(
|
||||
color=interaction.guild.me.color, title=kanal.name, description=f"{kanal.mention}\nID: {kanal.id}"
|
||||
color=interaction.guild.me.color, title=channel.name, description=f"{channel.mention}\nID: {channel.id}"
|
||||
)
|
||||
embed.set_author(name=kanal.guild.name, icon_url=kanal.guild.icon)
|
||||
embed.add_field(name="Beskrivelse", value=kanal.topic if kanal.topic else "**Ingen**", inline=False)
|
||||
embed.add_field(name="Opprettet", value=discord.utils.format_dt(kanal.created_at, style="F"))
|
||||
embed.add_field(name="NSFW", value="Ja" if kanal.is_nsfw() else "Nei")
|
||||
embed.set_author(name=channel.guild.name, icon_url=channel.guild.icon)
|
||||
embed.add_field(name="Beskrivelse", value=channel.topic if channel.topic else "**Ingen**", inline=False)
|
||||
embed.add_field(name="Opprettet", value=discord.utils.format_dt(channel.created_at, style="F"))
|
||||
embed.add_field(name="NSFW", value="Ja" if channel.is_nsfw() else "Nei")
|
||||
embed.add_field(
|
||||
name="Saktemodus", value=f"Ja ({kanal.slowmode_delay} sekunder)" if kanal.slowmode_delay else "Nei"
|
||||
name="Saktemodus", value=f"Ja ({channel.slowmode_delay} sekunder)" if channel.slowmode_delay else "Nei"
|
||||
)
|
||||
if kanal.category:
|
||||
embed.add_field(name="Kategori", value=kanal.category.name)
|
||||
embed.add_field(name=f"Antall med tilgang ({len(kanal.members)})", value=members)
|
||||
if channel.category:
|
||||
embed.add_field(name="Kategori", value=channel.category.name)
|
||||
embed.add_field(name=f"Antall med tilgang ({len(channel.members)})", value=members)
|
||||
await interaction.response.send_message(embed=embed)
|
||||
|
||||
@app_commands.checks.bot_has_permissions(embed_links=True)
|
||||
@app_commands.checks.cooldown(1, 2)
|
||||
@guild_group.command(name="talekanal", description="Hent informasjon om en talekanal")
|
||||
async def guild_voice_channel(self, interaction: discord.Interaction, kanal: discord.VoiceChannel):
|
||||
@app_commands.rename(channel="kanal")
|
||||
@app_commands.describe(channel="Talekanalen du vil se informasjon om")
|
||||
async def guild_voice_channel(self, interaction: discord.Interaction, channel: discord.VoiceChannel):
|
||||
"""
|
||||
Get information about a voice channel
|
||||
|
||||
Parameters
|
||||
----------
|
||||
interaction (discord.Interaction): Slash command context object
|
||||
kanal (discord.VoiceChannel): Voice channel to fetch information about
|
||||
channel (discord.VoiceChannel): Voice channel to fetch information about
|
||||
"""
|
||||
|
||||
embed = discord.Embed(color=interaction.guild.me.color, title=kanal.name, description=f"ID: {kanal.id}")
|
||||
embed.set_author(name=kanal.guild.name, icon_url=kanal.guild.icon)
|
||||
embed.add_field(name="Opprettet", value=discord.utils.format_dt(kanal.created_at, style="F"))
|
||||
embed.add_field(name="Bitrate", value=f"{int(kanal.bitrate / 1000)}kbps")
|
||||
embed = discord.Embed(color=interaction.guild.me.color, title=channel.name, description=f"ID: {channel.id}")
|
||||
embed.set_author(name=channel.guild.name, icon_url=channel.guild.icon)
|
||||
embed.add_field(name="Opprettet", value=discord.utils.format_dt(channel.created_at, style="F"))
|
||||
embed.add_field(name="Bitrate", value=f"{int(channel.bitrate / 1000)}kbps")
|
||||
embed.add_field(
|
||||
name="Maksgrense", value=f"{kanal.user_limit} personer" if kanal.user_limit != 0 else "∞ personer"
|
||||
name="Maksgrense", value=f"{channel.user_limit} personer" if channel.user_limit != 0 else "∞ personer"
|
||||
)
|
||||
if kanal.category:
|
||||
embed.add_field(name="Kategori", value=kanal.category.name)
|
||||
embed.add_field(name="Antall koblet til", value=len(kanal.members))
|
||||
if channel.category:
|
||||
embed.add_field(name="Kategori", value=channel.category.name)
|
||||
embed.add_field(name="Antall koblet til", value=len(channel.members))
|
||||
await interaction.response.send_message(embed=embed)
|
||||
|
||||
@app_commands.checks.bot_has_permissions(embed_links=True)
|
||||
@@ -583,49 +589,49 @@ class Info(commands.Cog):
|
||||
@app_commands.checks.bot_has_permissions(embed_links=True, external_emojis=True)
|
||||
@app_commands.checks.cooldown(1, 2)
|
||||
@user_group.command(name="info", description="Hent informasjon om en bruker")
|
||||
async def user_info(self, interaction: discord.Interaction, *, bruker: discord.Member | None = None):
|
||||
@app_commands.rename(user="bruker")
|
||||
@app_commands.describe(user="Brukeren du vil se informasjon om. Standard er deg selv")
|
||||
async def user_info(self, interaction: discord.Interaction, *, user: discord.Member | None = None):
|
||||
"""
|
||||
Get information about a user
|
||||
|
||||
Parameters
|
||||
----------
|
||||
interaction (discord.Interaction): Slash command context object
|
||||
bruker (discord.Member, optional): User to get information about. Defaults to None (invoker).
|
||||
user (discord.Member, optional): User to get information about. Defaults to None (invoker).
|
||||
"""
|
||||
|
||||
if not bruker:
|
||||
bruker = interaction.user
|
||||
if not user:
|
||||
user = interaction.user
|
||||
|
||||
# Get device(s) that is currently used by the user
|
||||
app = ""
|
||||
if str(bruker.mobile_status) != "offline":
|
||||
if str(user.mobile_status) != "offline":
|
||||
app += "📱 "
|
||||
if str(bruker.web_status) != "offline":
|
||||
if str(user.web_status) != "offline":
|
||||
app += "🌐 "
|
||||
if str(bruker.desktop_status) != "offline":
|
||||
if str(user.desktop_status) != "offline":
|
||||
app += "💻"
|
||||
|
||||
# Get index of join, creation and/or boost date in comparison to other users in the guild
|
||||
join_index = sorted(interaction.guild.members, key=lambda m: m.joined_at).index(bruker) + 1
|
||||
creation_index = sorted(interaction.guild.members, key=lambda m: m.created_at).index(bruker) + 1
|
||||
if bruker.premium_since:
|
||||
premium_index = (
|
||||
sorted(interaction.guild.premium_subscribers, key=lambda m: m.premium_since).index(bruker) + 1
|
||||
)
|
||||
join_index = sorted(interaction.guild.members, key=lambda m: m.joined_at).index(user) + 1
|
||||
creation_index = sorted(interaction.guild.members, key=lambda m: m.created_at).index(user) + 1
|
||||
if user.premium_since:
|
||||
premium_index = sorted(interaction.guild.premium_subscribers, key=lambda m: m.premium_since).index(user) + 1
|
||||
|
||||
# Creation/join date & days ago
|
||||
created_timestamp = discord.utils.format_dt(bruker.created_at, style="F")
|
||||
joined_timestamp = discord.utils.format_dt(bruker.joined_at, style="F")
|
||||
joined_days = (interaction.created_at - bruker.joined_at).days
|
||||
created_days = (interaction.created_at - bruker.created_at).days
|
||||
created_timestamp = discord.utils.format_dt(user.created_at, style="F")
|
||||
joined_timestamp = discord.utils.format_dt(user.joined_at, style="F")
|
||||
joined_days = (interaction.created_at - user.joined_at).days
|
||||
created_days = (interaction.created_at - user.created_at).days
|
||||
|
||||
# Boost date & days ago
|
||||
if bruker.premium_since:
|
||||
premium_since = discord.utils.format_dt(bruker.premium_since, style="F")
|
||||
premium_since_days = (interaction.created_at - bruker.premium_since).days
|
||||
if user.premium_since:
|
||||
premium_since = discord.utils.format_dt(user.premium_since, style="F")
|
||||
premium_since_days = (interaction.created_at - user.premium_since).days
|
||||
|
||||
# Get user roles
|
||||
roles = self.construct_role_string(bruker.roles)
|
||||
roles = self.construct_role_string(user.roles)
|
||||
|
||||
roles = (
|
||||
roles
|
||||
@@ -639,14 +645,14 @@ class Info(commands.Cog):
|
||||
"dnd": f'{self.bot.emoji["dnd"]} Ikke forstyrr',
|
||||
"offline": f'{self.bot.emoji["offline"]} Frakoblet',
|
||||
}
|
||||
status = statuses[str(bruker.status)]
|
||||
status = statuses[str(user.status)]
|
||||
|
||||
embed = discord.Embed(color=bruker.color, description=f"{bruker.mention}\nID: {bruker.id}\n{status}\n{app}")
|
||||
if bruker.display_name == bruker.name:
|
||||
embed.set_author(name=bruker.name, icon_url=bruker.display_avatar)
|
||||
embed = discord.Embed(color=user.color, description=f"{user.mention}\nID: {user.id}\n{status}\n{app}")
|
||||
if user.display_name == user.name:
|
||||
embed.set_author(name=user.name, icon_url=user.display_avatar)
|
||||
else:
|
||||
embed.set_author(name=f"{bruker.name} | {bruker.display_name}", icon_url=bruker.display_avatar)
|
||||
embed.set_thumbnail(url=bruker.display_avatar)
|
||||
embed.set_author(name=f"{user.name} | {user.display_name}", icon_url=user.display_avatar)
|
||||
embed.set_thumbnail(url=user.display_avatar)
|
||||
embed.add_field(
|
||||
name="Opprettet",
|
||||
value=f"{created_timestamp}\n{created_days} " + f'{"dag" if created_days == 1 else "dager"} siden',
|
||||
@@ -655,7 +661,7 @@ class Info(commands.Cog):
|
||||
name="Ble med i serveren",
|
||||
value=f"{joined_timestamp}\n{joined_days} " + f'{"dag" if joined_days == 1 else "dager"} siden',
|
||||
)
|
||||
if bruker.premium_since:
|
||||
if user.premium_since:
|
||||
embed.add_field(
|
||||
name="Boost",
|
||||
value=f"{premium_since}\n{premium_since_days} "
|
||||
@@ -663,13 +669,13 @@ class Info(commands.Cog):
|
||||
+ f"Booster #{premium_index} av serveren",
|
||||
inline=False,
|
||||
)
|
||||
embed.add_field(name=f"Roller ({len(bruker.roles)})", value=roles, inline=False)
|
||||
embed.add_field(name=f"Roller ({len(user.roles)})", value=roles, inline=False)
|
||||
embed.set_footer(text=f"#{join_index} Medlem av serveren | #{creation_index} Eldste brukeren på serveren")
|
||||
|
||||
# Playing activity
|
||||
if bruker.activities:
|
||||
if user.activities:
|
||||
games = ""
|
||||
for activity in bruker.activities:
|
||||
for activity in user.activities:
|
||||
games += f"{activity.name}\n"
|
||||
if games:
|
||||
embed.add_field(name="Spiller", value=games, inline=False)
|
||||
@@ -679,20 +685,22 @@ class Info(commands.Cog):
|
||||
@app_commands.checks.bot_has_permissions(embed_links=True)
|
||||
@app_commands.checks.cooldown(1, 2)
|
||||
@user_group.command(name="roller", description="Hent roller til en bruker")
|
||||
async def user_roles(self, interaction: discord.Interaction, bruker: discord.Member | None = None):
|
||||
@app_commands.rename(user="bruker")
|
||||
@app_commands.describe(user="Brukeren du vil se rollene til. Standard er deg selv")
|
||||
async def user_roles(self, interaction: discord.Interaction, user: discord.Member | None = None):
|
||||
"""
|
||||
Get roles of a user
|
||||
|
||||
Parameters
|
||||
----------
|
||||
interaction (discord.Interaction): Slash command context object
|
||||
bruker (discord.Member, optional): User to get roles of. Defaults to None (invoker).
|
||||
user (discord.Member, optional): User to get roles of. Defaults to None (invoker).
|
||||
"""
|
||||
|
||||
if not bruker:
|
||||
bruker = interaction.user
|
||||
if not user:
|
||||
user = interaction.user
|
||||
|
||||
roles = self.construct_role_string(bruker.roles)
|
||||
roles = self.construct_role_string(user.roles)
|
||||
|
||||
# If the list of roles is too long, send it as a file
|
||||
if len(roles) > 2048:
|
||||
@@ -700,30 +708,32 @@ class Info(commands.Cog):
|
||||
interaction, roles, f"{interaction.guild.id}_{interaction.user.id}_roles.txt"
|
||||
)
|
||||
else:
|
||||
embed = discord.Embed(color=bruker.color, description=roles)
|
||||
embed.set_author(name=f"Roller ({len(bruker.roles)})", icon_url=bruker.display_avatar)
|
||||
embed.set_footer(text=bruker.name, icon_url=bruker.display_avatar)
|
||||
embed = discord.Embed(color=user.color, description=roles)
|
||||
embed.set_author(name=f"Roller ({len(user.roles)})", icon_url=user.display_avatar)
|
||||
embed.set_footer(text=user.name, icon_url=user.display_avatar)
|
||||
await interaction.response.send_message(embed=embed)
|
||||
|
||||
@app_commands.checks.bot_has_permissions(embed_links=True)
|
||||
@app_commands.checks.cooldown(1, 2)
|
||||
@user_group.command(name="avatar", description="Hent avatar til en bruker")
|
||||
async def user_avatar(self, interaction: discord.Interaction, bruker: discord.User | discord.Member | None = None):
|
||||
@app_commands.rename(user="bruker")
|
||||
@app_commands.describe(user="Brukeren du vil se avataren til. Standard er deg selv")
|
||||
async def user_avatar(self, interaction: discord.Interaction, user: discord.User | discord.Member | None = None):
|
||||
"""
|
||||
Get avatar of a user
|
||||
|
||||
Parameters
|
||||
----------
|
||||
interaction (discord.Interaction): Slash command context object
|
||||
bruker (discord.User, optional): User to get avatar of. Defaults to None (invoker).
|
||||
user (discord.User, optional): User to get avatar of. Defaults to None (invoker).
|
||||
"""
|
||||
|
||||
if not bruker:
|
||||
bruker = interaction.user
|
||||
if not user:
|
||||
user = interaction.user
|
||||
|
||||
embed = discord.Embed(color=bruker.color, description=f"[Lenke]({bruker.display_avatar})")
|
||||
embed.set_author(name=bruker.name, icon_url=bruker.display_avatar)
|
||||
embed.set_image(url=bruker.display_avatar)
|
||||
embed = discord.Embed(color=user.color, description=f"[Lenke]({user.display_avatar})")
|
||||
embed.set_author(name=user.name, icon_url=user.display_avatar)
|
||||
embed.set_image(url=user.display_avatar)
|
||||
await interaction.response.send_message(embed=embed)
|
||||
|
||||
|
||||
|
||||
@@ -135,14 +135,16 @@ class Viteboka(commands.Cog):
|
||||
@app_commands.checks.bot_has_permissions(embed_links=True, attach_files=True)
|
||||
@app_commands.checks.cooldown(1, 10)
|
||||
@viteboka_group.command(name="søk", description="Søk etter en artikkel i Viteboka")
|
||||
async def search(self, interaction: discord.Interaction, søkestreng: str):
|
||||
@app_commands.rename(query="søkestreng")
|
||||
@app_commands.describe(query="Det du vil søke etter")
|
||||
async def search(self, interaction: discord.Interaction, query: str):
|
||||
"""
|
||||
Search for an article in Viteboka
|
||||
|
||||
Parameters
|
||||
----------
|
||||
interaction (discord.Interaction): Slash command context object
|
||||
søkestreng (str): The search query
|
||||
query (str): The search query
|
||||
"""
|
||||
|
||||
await interaction.response.defer()
|
||||
@@ -151,19 +153,19 @@ class Viteboka(commands.Cog):
|
||||
"action": "query",
|
||||
"format": "json",
|
||||
"list": "search",
|
||||
"srsearch": søkestreng,
|
||||
"srsearch": query,
|
||||
}
|
||||
try:
|
||||
data = await query_api(self.bot.http_session, params)
|
||||
except VitebokaException as e:
|
||||
self.bot.logger.error(f"Failed to search for articles with query {søkestreng}: {e}")
|
||||
self.bot.logger.error(f"Failed to search for articles with query {query}: {e}")
|
||||
embed = embed_templates.error_fatal("Klarte ikke å søke etter artikler")
|
||||
return await interaction.followup.send(embed=embed)
|
||||
|
||||
search_results = data["query"]["search"]
|
||||
|
||||
if not search_results:
|
||||
self.bot.logger.info(f"No articles found with query {søkestreng}")
|
||||
self.bot.logger.info(f"No articles found with query {query}")
|
||||
embed = embed_templates.error_warning("Fant ingen artikler som matcher søket")
|
||||
return await interaction.followup.send(embed=embed)
|
||||
|
||||
@@ -182,9 +184,9 @@ class Viteboka(commands.Cog):
|
||||
return await interaction.followup.send(embed=embed, view=view)
|
||||
|
||||
try:
|
||||
title, url, text, image = await fetch_article(self.bot.http_session, søkestreng)
|
||||
title, url, text, image = await fetch_article(self.bot.http_session, query)
|
||||
except VitebokaException as e:
|
||||
self.bot.logger.error(f"Failed to fetch article {søkestreng}: {e}")
|
||||
self.bot.logger.error(f"Failed to fetch article {query}: {e}")
|
||||
embed = embed_templates.error_fatal(str(e))
|
||||
return await interaction.followup.send(embed=embed)
|
||||
|
||||
|
||||
Reference in new issue
Block a user