77 lines
2.7 KiB
Python
77 lines
2.7 KiB
Python
import discord
|
|
from discord import app_commands
|
|
from discord.app_commands import Choice
|
|
from discord.ext import commands
|
|
import pytz
|
|
|
|
from classes.my_cog import MyCog
|
|
|
|
|
|
class Utils(MyCog):
|
|
def __init__(self, bot):
|
|
super().__init__(bot)
|
|
self.bot = bot
|
|
self.context_menu_quote = app_commands.ContextMenu(name="Quote", callback=self.quote_message)
|
|
bot.tree.add_command(self.context_menu_quote)
|
|
|
|
@app_commands.command(name="quote")
|
|
async def quote(self, interaction: discord.Interaction, link: str):
|
|
"""
|
|
Citer un message
|
|
:param interaction: discord interaction
|
|
:param link: Lien du message à citer
|
|
"""
|
|
try:
|
|
splited_link = link.split("/")
|
|
|
|
channel_id = int(splited_link[5])
|
|
message_id = int(splited_link[6])
|
|
|
|
channel = await self.bot.fetch_channel(channel_id)
|
|
quoted_message = await channel.fetch_message(message_id)
|
|
|
|
embed = discord.Embed(
|
|
description=quoted_message.content,
|
|
timestamp=quoted_message.created_at.astimezone(pytz.timezone('Europe/Berlin')),
|
|
color=discord.Color.random()
|
|
)
|
|
embed.set_author(name=f"{quoted_message.author.name}",
|
|
url=link,
|
|
icon_url=quoted_message.author.display_avatar.url)
|
|
|
|
embed.set_footer(text=f"Quoted by {interaction.user.name}")
|
|
|
|
await interaction.channel.send(embed=embed)
|
|
await interaction.response.send_message("Citation opérée avec succès !",
|
|
ephemeral=True)
|
|
|
|
except:
|
|
await interaction.response.send_message(
|
|
f"Impossible de citer ce message...\nVérifiez que le lien du message soit valide",
|
|
ephemeral=True)
|
|
|
|
|
|
async def quote_message(self, interaction: discord.Interaction, message: discord.Message):
|
|
""""
|
|
Citer un message
|
|
"""
|
|
embed = discord.Embed(
|
|
description=message.content,
|
|
timestamp=message.created_at.astimezone(pytz.timezone('Europe/Berlin')),
|
|
color=discord.Color.random()
|
|
)
|
|
embed.set_author(
|
|
name=f"{message.author.name}",
|
|
url=message.jump_url,
|
|
icon_url=message.author.display_avatar.url
|
|
)
|
|
|
|
embed.set_footer(text=f"Quoted by {interaction.user.name}")
|
|
await interaction.channel.send(embed=embed)
|
|
await interaction.response.send_message("Citation opérée avec succès !",
|
|
ephemeral=True)
|
|
|
|
|
|
async def setup(bot):
|
|
await bot.add_cog(Utils(bot))
|