staticky-bot/cogs/utils.py

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))