From 14e83dff0e46a4e30f7d2fb25c1527e631f973af Mon Sep 17 00:00:00 2001 From: Narmy <67862800+NarmyOnDiscord@users.noreply.github.com> Date: Sat, 30 Apr 2022 15:37:37 +0200 Subject: [PATCH] Adds two basic context menus for members and messages Co-authored-by: Danny --- examples/app_commands/basic.py | 38 +++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/examples/app_commands/basic.py b/examples/app_commands/basic.py index c617c082f..515d9fd21 100644 --- a/examples/app_commands/basic.py +++ b/examples/app_commands/basic.py @@ -65,7 +65,43 @@ async def joined(interaction: discord.Interaction, member: Optional[discord.Memb # If no member is explicitly provided then we use the command user here member = member or interaction.user - await interaction.response.send_message(f'{member} joined in {member.joined_at}') + # The format_dt function formats the date time into a human readable representation in the official client + await interaction.response.send_message(f'{member} joined in {discord.utils.format_dt(member.joined_at)}') + + +# A Context Menu command is an app command that can be run on a member or on a message by +# accessing a menu within the client, usually via right clicking. +# It always takes an interaction as its first parameter and a Member or Message as its second parameter. + +# This context menu command only works on members +@client.tree.context_menu(name='Show Join Date') +async def show_join_date(interaction: discord.Interaction, member: discord.Member): + # The format_dt function formats the date time into a human readable representation in the official client + await interaction.response.send_message(f'{member} joined in {discord.utils.format_dt(member.joined_at)}') + + +# This context menu command only works on messages +@client.tree.context_menu(name='Report to Moderators') +async def report_message(interaction: discord.Interaction, message: discord.Message): + # We're sending this response message with ephemeral=True, so only the command executor can see it + await interaction.response.send_message( + f'Thanks for reporting this message by {message.author.mention} to our moderators.', ephemeral=True + ) + + # Handle report by sending it into a log channel + log_channel = interaction.guild.get_channel(0) # replace with your channel id + + embed = discord.Embed(title='Reported Message') + if message.content: + embed.description = message.content + + embed.set_author(name=message.author.display_name, icon_url=message.author.display_avatar.url) + embed.timestamp = message.created_at + + url_view = discord.ui.View() + url_view.add_item(discord.ui.Button(label='Go to Message', style=discord.ButtonStyle.url, url=message.jump_url)) + + await log_channel.send(embed=embed, view=url_view) client.run('token')