migrate reminder in another file
This commit is contained in:
parent
03bc6f8937
commit
ed9c78e31c
2 changed files with 207 additions and 193 deletions
202
src/cogs/reminder.py
Normal file
202
src/cogs/reminder.py
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
import discord
|
||||||
|
from discord.ext import commands, tasks
|
||||||
|
from discord_slash import cog_ext
|
||||||
|
from utils.reminder import Reminder
|
||||||
|
from utils.core import getURLsInString, getMentionInString, isSlash, mySendHidden, mentionToUser, cleanCodeStringWithMentionAndURLs
|
||||||
|
from utils.time import stringTempsVersSecondes, nowUTC, intToDatetime, timedeltaToString, timestampScreen
|
||||||
|
|
||||||
|
def setup(client):
|
||||||
|
client.add_cog(Reminder(client))
|
||||||
|
|
||||||
|
class Reminder(commands.Cog):
|
||||||
|
"""Commandes relatives aux cours."""
|
||||||
|
def __init__(self, client):
|
||||||
|
self.client = client
|
||||||
|
|
||||||
|
@commands.command(name='reminder', aliases=["remind", "remindme", "rappel"])
|
||||||
|
async def _reminder(self, ctx, time, *reminder):
|
||||||
|
"""Met en place un rappel.\n ➡ Syntaxe: {PREFIX}reminder/remind/remindme/rappel <temps>[@] [message]"""
|
||||||
|
_, fromSlash, reminder = isSlash(reminder)
|
||||||
|
if len(reminder) > 0:
|
||||||
|
reminder = " ".join(reminder)
|
||||||
|
else:
|
||||||
|
reminder = None
|
||||||
|
|
||||||
|
embed = discord.Embed(color = 0xC41B1B)
|
||||||
|
extrarg = 0
|
||||||
|
guildID = ctx.guild.id # can be set to 0 if its a DM message, so it can be see from anywhere
|
||||||
|
destination = "ici"
|
||||||
|
if not reminder:
|
||||||
|
reminder = "Notification"
|
||||||
|
if time == "help":
|
||||||
|
seconds = 0
|
||||||
|
else:
|
||||||
|
if time.endswith("@"):
|
||||||
|
time = time[:-1]
|
||||||
|
extrarg = 1
|
||||||
|
if time.lower().endswith("p"):
|
||||||
|
time = time[:-1]
|
||||||
|
extrarg = 2
|
||||||
|
guildID = 0
|
||||||
|
destination = "en MP"
|
||||||
|
seconds = stringTempsVersSecondes(time)
|
||||||
|
if type(seconds) != int:
|
||||||
|
if fromSlash != True:
|
||||||
|
await ctx.message.add_reaction(emoji = '❓')
|
||||||
|
return await mySendHidden(ctx, fromSlash, seconds)
|
||||||
|
if seconds == 0:
|
||||||
|
embed.add_field(name="Attention", value=
|
||||||
|
"Format pour le temps : `d` ou `j` pour jour, `h` pour heure, `m` pour minute, `s` pour seconde (légères variances acceptés aussi). \
|
||||||
|
\nMet un `@` accolée aux temps pour mentionner les gens mentionner dans ton message. \
|
||||||
|
\nMet un `P` accolée au temps pour que le bot te DM au lieu de t'envoyer un message dans ce salon."
|
||||||
|
)
|
||||||
|
elif seconds > (50 * (86400 * 365.242)): # 50 ans
|
||||||
|
embed.add_field(name="Attention", value="Tu as spécifié une durée trop longue, la durée maximum étant de 50 ans.")
|
||||||
|
else:
|
||||||
|
now = int(nowUTC())
|
||||||
|
messageID = None
|
||||||
|
if fromSlash != True:
|
||||||
|
messageID = ctx.message.id
|
||||||
|
reminderID = Reminder().ajoutReminder(messageID, ctx.channel.id, extrarg, reminder, now, now + seconds, ctx.author.id, guildID)
|
||||||
|
return await mySendHidden(ctx, fromSlash, f"Ton reminder **`{reminderID[0][0]}`** est enrengistré, je te notifie {destination} dans {timedeltaToString(seconds)} (avec 1m de retard maximum).")
|
||||||
|
await mySendHidden(ctx, fromSlash, embed = embed)
|
||||||
|
@_reminder.error
|
||||||
|
async def _reminder_error(self, ctx, error):
|
||||||
|
if 'time is a required argument that is missing.' in str(error):
|
||||||
|
await ctx.send("Tu n'as pas spécifié de durée.")
|
||||||
|
@cog_ext.cog_slash(name="reminder", description = "Met en place un rappel.")
|
||||||
|
async def __reminder(self, ctx, time, reminder = None):
|
||||||
|
if reminder == None:
|
||||||
|
return await self._reminder(ctx, time, True)
|
||||||
|
else:
|
||||||
|
return await self._reminder(ctx, time, reminder, True)
|
||||||
|
|
||||||
|
@tasks.loop(minutes = 1)
|
||||||
|
async def _reminderLoop(self):
|
||||||
|
"""Méthode qui se répète toute les minutes pour vérifier si des rappels n'ont pas expirés, si expirés, les envoient."""
|
||||||
|
expiration = Reminder().recuperationExpiration(int(nowUTC())) # on récupères les éléments expirés
|
||||||
|
for expired in expiration: # on regarde tout les éléments expirés
|
||||||
|
reminder = expired[2] # message
|
||||||
|
userID = expired[4] # personne qui a fait le rappel
|
||||||
|
channel = self.client.get_channel(expired[0]) # salon du message
|
||||||
|
finalEmbed = discord.Embed(description = cleanCodeStringWithMentionAndURLs(reminder), timestamp = intToDatetime(expired[3]), color = discord.Colour.random())
|
||||||
|
if expired[1] == 2: # s'il faut envoyer en DM le message
|
||||||
|
user = self.client.get_user(userID)
|
||||||
|
if user == None: # si l'utilisateur n'est pas trouvé
|
||||||
|
return Reminder().suppressionReminder(expired[5]) # suppression du rappel
|
||||||
|
channel = await user.create_dm() # envoie en DM
|
||||||
|
userID = None # plus de mention
|
||||||
|
sourceMessage = None # plus de message source
|
||||||
|
elif channel == None: # si le salon n'existe plus
|
||||||
|
user = self.client.get_user(userID)
|
||||||
|
if user == None: # si l'utilisateur n'est pas trouvé
|
||||||
|
return Reminder().suppressionReminder(expired[5]) # suppression du rappel
|
||||||
|
channel = await user.create_dm() # envoie en DM
|
||||||
|
userID = None # plus de mention
|
||||||
|
sourceMessage = None # plus de message source
|
||||||
|
finalEmbed.add_field(name = "Info", value = "Message envoyé en DM car le salon n'est plus disponible.")
|
||||||
|
else:
|
||||||
|
sourceMessage = expired[6]
|
||||||
|
if sourceMessage != None: # vérification message avec slash command et que si c'est pas en DM
|
||||||
|
try:
|
||||||
|
sourceMessage = await channel.fetch_message(sourceMessage) # récupération message
|
||||||
|
except:
|
||||||
|
sourceMessage = None # message a été supprimé
|
||||||
|
if sourceMessage != None:
|
||||||
|
await sourceMessage.add_reaction(emoji = '✅') # ajout réaction
|
||||||
|
finalEmbed.set_footer(text=f"Message d'il y a {timedeltaToString(int(nowUTC()) - expired[3])}")
|
||||||
|
links = ""
|
||||||
|
findedURLs = getURLsInString(reminder)
|
||||||
|
for i in range(0, len(findedURLs)): # ajout de field "lien" pour pouvoir cliquer sur les liens facilement
|
||||||
|
links += f"[Lien {i + 1}]({findedURLs[i]}) · "
|
||||||
|
if len(findedURLs) > 0:
|
||||||
|
finalEmbed.add_field(name = f"Lien{'s' if len(findedURLs) > 1 else ''}", value = links[:-3])
|
||||||
|
message = ""
|
||||||
|
if userID != None: # metion de l'utilisateur si le message n'est pas en DM
|
||||||
|
message = f"<@{userID}>"
|
||||||
|
if expired[1] == 1: # s'il faut mentionner les personnes dans le message
|
||||||
|
mentionList = getMentionInString(reminder)
|
||||||
|
for i in mentionList:
|
||||||
|
message += f" {i}"
|
||||||
|
try:
|
||||||
|
await channel.send(message, embed = finalEmbed) # envoie du rappel
|
||||||
|
except: # les DM sont fermés
|
||||||
|
pass
|
||||||
|
Reminder().suppressionReminder(expired[5]) # suppression du rappel
|
||||||
|
@_reminderLoop.before_loop
|
||||||
|
async def __avant_reminderLoop(self):
|
||||||
|
await self.client.wait_until_ready()
|
||||||
|
|
||||||
|
@commands.command(name='reminderlist', aliases=["remindlist", "rl", "rappeliste"])
|
||||||
|
async def _reminderlist(self, ctx, *arg):
|
||||||
|
"""Affiche la liste des rappels d'un utilisateur.\n ➡ Syntaxe: {PREFIX}reminderlist/rl/remindlist/rappeliste [utilisateur]"""
|
||||||
|
_, fromSlash, arg = isSlash(arg)
|
||||||
|
utilisateur = ctx.author.id
|
||||||
|
page = 1
|
||||||
|
if len(arg) > 0:
|
||||||
|
try:
|
||||||
|
utilisateur = mentionToUser(getMentionInString(arg[0])[0])
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
page = int(arg[0])
|
||||||
|
except:
|
||||||
|
return await mySendHidden(ctx, fromSlash, "Veuillez renseigné un utilisateur ou un numéro de page valide.")
|
||||||
|
|
||||||
|
reminders = Reminder().listeReminder(utilisateur, ctx.guild.id)
|
||||||
|
if fromSlash != True:
|
||||||
|
await ctx.message.add_reaction(emoji = '✅')
|
||||||
|
|
||||||
|
pageMAX = -(-len(reminders) // 5)
|
||||||
|
embed = discord.Embed(description = f"**Rappel{'s' if len(reminders) > 1 else ''} de <@{utilisateur}>** • Page {page}/{pageMAX}", color = discord.Colour.random())
|
||||||
|
embed.set_thumbnail(url = self.client.get_user(utilisateur).avatar_url_as(size = 64))
|
||||||
|
limit = 5 * page
|
||||||
|
if len(reminders) > 0 and page <= pageMAX:
|
||||||
|
curseur = limit - 4
|
||||||
|
for reminder in reminders[limit - 5:]:
|
||||||
|
if curseur <= limit:
|
||||||
|
texte = reminder[0]
|
||||||
|
if len(texte) > 1024:
|
||||||
|
texte = f"{texte[:1021]}..."
|
||||||
|
expiration = reminder[2] - int(nowUTC())
|
||||||
|
if expiration > 0:
|
||||||
|
expiration = f"Expire dans {timedeltaToString(expiration)}"
|
||||||
|
else:
|
||||||
|
expiration = f"A déjà expiré."
|
||||||
|
embed.add_field(value = texte, name = f"#{reminder[3]} • Fais le {timestampScreen(intToDatetime(reminder[1]))}\n{expiration}", inline = False)
|
||||||
|
curseur += 1
|
||||||
|
else:
|
||||||
|
embed.add_field(name = "\u200b", value = f"L'utilisateur n'a aucun rappel en attente ou page n°{page} vide !")
|
||||||
|
embed.set_footer(text = "Les rappels qui ont déjà expirés vont apparaître dans quelques instants.\nIls peuvent avoir jusqu'à 1 minute de retard maximum.")
|
||||||
|
await ctx.send(embed = embed)
|
||||||
|
@cog_ext.cog_slash(name="reminderlist", description = "Affiche la liste des rappels d'un utilisateur.")
|
||||||
|
async def __reminderlist(self, ctx, userorpage = None):
|
||||||
|
if userorpage == None:
|
||||||
|
return await self._reminderlist(ctx, True)
|
||||||
|
else:
|
||||||
|
return await self._reminderlist(ctx, userorpage, True)
|
||||||
|
|
||||||
|
@commands.command(name='reminderdelete', aliases=["reminddelete", "rd"])
|
||||||
|
async def _reminderdelete(self, ctx, *id):
|
||||||
|
"""Suppprime un rappel.\n ➡ Syntaxe: {PREFIX}reminderdelete/rd <id>"""
|
||||||
|
id, fromSlash, _ = isSlash(id)
|
||||||
|
if id:
|
||||||
|
try:
|
||||||
|
id = int(id)
|
||||||
|
except:
|
||||||
|
return await mySendHidden(ctx, fromSlash, "L'ID renseigné n'est pas valide.")
|
||||||
|
else:
|
||||||
|
return await ctx.send("Veuillez renseigner un ID.")
|
||||||
|
|
||||||
|
verification = Reminder().appartenanceReminder(ctx.author.id, id, ctx.guild.id)
|
||||||
|
if verification:
|
||||||
|
Reminder().suppressionReminder(id)
|
||||||
|
if fromSlash != True:
|
||||||
|
await ctx.message.add_reaction(emoji = '✅')
|
||||||
|
return await ctx.send(f"Reminder **#{id}** supprimé !")
|
||||||
|
else:
|
||||||
|
if fromSlash != True:
|
||||||
|
await ctx.message.add_reaction(emoji = '❌')
|
||||||
|
return await mySendHidden(ctx, fromSlash, "Rappel non trouvé, pas sur le bon serveur ou qui ne vous appartiens pas.")
|
||||||
|
@cog_ext.cog_slash(name="reminderdelete", description = "Suppprime un rappel.")
|
||||||
|
async def __reminderdelete(self, ctx, id):
|
||||||
|
return await self._reminderdelete(ctx, id, True)
|
|
@ -1,11 +1,11 @@
|
||||||
import discord
|
import discord
|
||||||
from discord.ext import commands, tasks
|
from discord.ext import commands
|
||||||
from random import randint, shuffle
|
from random import randint, shuffle
|
||||||
|
from re import findall
|
||||||
from discord_slash import cog_ext
|
from discord_slash import cog_ext
|
||||||
from utils.reminder import Reminder
|
from utils.core import map_list_among_us, cleanCodeStringWithMentionAndURLs, cleanUser, userOrNick
|
||||||
from utils.core import map_list_among_us, getURLsInString, getMentionInString, cleanCodeStringWithMentionAndURLs, cleanUser, userOrNick
|
|
||||||
from utils.core import mySendHidden, mentionToUser, getChangelogs, getActualVersion, isSlash, load, devOrStableChannel
|
from utils.core import mySendHidden, mentionToUser, getChangelogs, getActualVersion, isSlash, load, devOrStableChannel
|
||||||
from utils.time import stringTempsVersSecondes, nowUTC, intToDatetime, timedeltaToString, timestampScreen, getAge, ageLayout, nowCustom
|
from utils.time import nowUTC, intToDatetime, timestampScreen, getAge, ageLayout, nowCustom
|
||||||
|
|
||||||
def setup(client):
|
def setup(client):
|
||||||
client.add_cog(Utils(client))
|
client.add_cog(Utils(client))
|
||||||
|
@ -249,7 +249,7 @@ class Utils(commands.Cog):
|
||||||
version = f"`{version}`"
|
version = f"`{version}`"
|
||||||
if changes[0] == 200:
|
if changes[0] == 200:
|
||||||
version = f"[{version}]({changes[1]})"
|
version = f"[{version}]({changes[1]})"
|
||||||
embed.add_field(name = "Version", value = f"{version} ({devOrStableChannel().replace("main", "stable")})")
|
embed.add_field(name = "Version", value = f"{version} ({devOrStableChannel().replace('main', 'stable')})")
|
||||||
embed.set_footer(text = f"Basé sur discord.py {discord.__version__}")
|
embed.set_footer(text = f"Basé sur discord.py {discord.__version__}")
|
||||||
try:
|
try:
|
||||||
if fromSlash != True:
|
if fromSlash != True:
|
||||||
|
@ -447,194 +447,6 @@ class Utils(commands.Cog):
|
||||||
args = args[:1]
|
args = args[:1]
|
||||||
return await self._avis(ctx, args, True)
|
return await self._avis(ctx, args, True)
|
||||||
|
|
||||||
@commands.command(name='reminder', aliases=["remind", "remindme", "rappel"])
|
|
||||||
async def _reminder(self, ctx, time, *reminder):
|
|
||||||
"""Met en place un rappel.\n ➡ Syntaxe: {PREFIX}reminder/remind/remindme/rappel <temps>[@] [message]"""
|
|
||||||
_, fromSlash, reminder = isSlash(reminder)
|
|
||||||
if len(reminder) > 0:
|
|
||||||
reminder = " ".join(reminder)
|
|
||||||
else:
|
|
||||||
reminder = None
|
|
||||||
|
|
||||||
embed = discord.Embed(color = 0xC41B1B)
|
|
||||||
extrarg = 0
|
|
||||||
guildID = ctx.guild.id # can be set to 0 if its a DM message, so it can be see from anywhere
|
|
||||||
destination = "ici"
|
|
||||||
if not reminder:
|
|
||||||
reminder = "Notification"
|
|
||||||
if time == "help":
|
|
||||||
seconds = 0
|
|
||||||
else:
|
|
||||||
if time.endswith("@"):
|
|
||||||
time = time[:-1]
|
|
||||||
extrarg = 1
|
|
||||||
if time.lower().endswith("p"):
|
|
||||||
time = time[:-1]
|
|
||||||
extrarg = 2
|
|
||||||
guildID = 0
|
|
||||||
destination = "en MP"
|
|
||||||
seconds = stringTempsVersSecondes(time)
|
|
||||||
if type(seconds) != int:
|
|
||||||
if fromSlash != True:
|
|
||||||
await ctx.message.add_reaction(emoji = '❓')
|
|
||||||
return await mySendHidden(ctx, fromSlash, seconds)
|
|
||||||
if seconds == 0:
|
|
||||||
embed.add_field(name="Attention", value=
|
|
||||||
"Format pour le temps : `d` ou `j` pour jour, `h` pour heure, `m` pour minute, `s` pour seconde (légères variances acceptés aussi). \
|
|
||||||
\nMet un `@` accolée aux temps pour mentionner les gens mentionner dans ton message. \
|
|
||||||
\nMet un `P` accolée au temps pour que le bot te DM au lieu de t'envoyer un message dans ce salon."
|
|
||||||
)
|
|
||||||
elif seconds > (50 * (86400 * 365.242)): # 50 ans
|
|
||||||
embed.add_field(name="Attention", value="Tu as spécifié une durée trop longue, la durée maximum étant de 50 ans.")
|
|
||||||
else:
|
|
||||||
now = int(nowUTC())
|
|
||||||
messageID = None
|
|
||||||
if fromSlash != True:
|
|
||||||
messageID = ctx.message.id
|
|
||||||
reminderID = Reminder().ajoutReminder(messageID, ctx.channel.id, extrarg, reminder, now, now + seconds, ctx.author.id, guildID)
|
|
||||||
return await mySendHidden(ctx, fromSlash, f"Ton reminder **`{reminderID[0][0]}`** est enrengistré, je te notifie {destination} dans {timedeltaToString(seconds)} (avec 1m de retard maximum).")
|
|
||||||
await mySendHidden(ctx, fromSlash, embed = embed)
|
|
||||||
@_reminder.error
|
|
||||||
async def _reminder_error(self, ctx, error):
|
|
||||||
if 'time is a required argument that is missing.' in str(error):
|
|
||||||
await ctx.send("Tu n'as pas spécifié de durée.")
|
|
||||||
@cog_ext.cog_slash(name="reminder", description = "Met en place un rappel.")
|
|
||||||
async def __reminder(self, ctx, time, reminder = None):
|
|
||||||
if reminder == None:
|
|
||||||
return await self._reminder(ctx, time, True)
|
|
||||||
else:
|
|
||||||
return await self._reminder(ctx, time, reminder, True)
|
|
||||||
|
|
||||||
@tasks.loop(minutes = 1)
|
|
||||||
async def _reminderLoop(self):
|
|
||||||
"""Méthode qui se répète toute les minutes pour vérifier si des rappels n'ont pas expirés, si expirés, les envoient."""
|
|
||||||
expiration = Reminder().recuperationExpiration(int(nowUTC())) # on récupères les éléments expirés
|
|
||||||
for expired in expiration: # on regarde tout les éléments expirés
|
|
||||||
reminder = expired[2] # message
|
|
||||||
userID = expired[4] # personne qui a fait le rappel
|
|
||||||
channel = self.client.get_channel(expired[0]) # salon du message
|
|
||||||
finalEmbed = discord.Embed(description = cleanCodeStringWithMentionAndURLs(reminder), timestamp = intToDatetime(expired[3]), color = discord.Colour.random())
|
|
||||||
if expired[1] == 2: # s'il faut envoyer en DM le message
|
|
||||||
user = self.client.get_user(userID)
|
|
||||||
if user == None: # si l'utilisateur n'est pas trouvé
|
|
||||||
return Reminder().suppressionReminder(expired[5]) # suppression du rappel
|
|
||||||
channel = await user.create_dm() # envoie en DM
|
|
||||||
userID = None # plus de mention
|
|
||||||
sourceMessage = None # plus de message source
|
|
||||||
elif channel == None: # si le salon n'existe plus
|
|
||||||
user = self.client.get_user(userID)
|
|
||||||
if user == None: # si l'utilisateur n'est pas trouvé
|
|
||||||
return Reminder().suppressionReminder(expired[5]) # suppression du rappel
|
|
||||||
channel = await user.create_dm() # envoie en DM
|
|
||||||
userID = None # plus de mention
|
|
||||||
sourceMessage = None # plus de message source
|
|
||||||
finalEmbed.add_field(name = "Info", value = "Message envoyé en DM car le salon n'est plus disponible.")
|
|
||||||
else:
|
|
||||||
sourceMessage = expired[6]
|
|
||||||
if sourceMessage != None: # vérification message avec slash command et que si c'est pas en DM
|
|
||||||
try:
|
|
||||||
sourceMessage = await channel.fetch_message(sourceMessage) # récupération message
|
|
||||||
except:
|
|
||||||
sourceMessage = None # message a été supprimé
|
|
||||||
if sourceMessage != None:
|
|
||||||
await sourceMessage.add_reaction(emoji = '✅') # ajout réaction
|
|
||||||
finalEmbed.set_footer(text=f"Message d'il y a {timedeltaToString(int(nowUTC()) - expired[3])}")
|
|
||||||
links = ""
|
|
||||||
findedURLs = getURLsInString(reminder)
|
|
||||||
for i in range(0, len(findedURLs)): # ajout de field "lien" pour pouvoir cliquer sur les liens facilement
|
|
||||||
links += f"[Lien {i + 1}]({findedURLs[i]}) · "
|
|
||||||
if len(findedURLs) > 0:
|
|
||||||
finalEmbed.add_field(name = f"Lien{'s' if len(findedURLs) > 1 else ''}", value = links[:-3])
|
|
||||||
message = ""
|
|
||||||
if userID != None: # metion de l'utilisateur si le message n'est pas en DM
|
|
||||||
message = f"<@{userID}>"
|
|
||||||
if expired[1] == 1: # s'il faut mentionner les personnes dans le message
|
|
||||||
mentionList = getMentionInString(reminder)
|
|
||||||
for i in mentionList:
|
|
||||||
message += f" {i}"
|
|
||||||
try:
|
|
||||||
await channel.send(message, embed = finalEmbed) # envoie du rappel
|
|
||||||
except: # les DM sont fermés
|
|
||||||
pass
|
|
||||||
Reminder().suppressionReminder(expired[5]) # suppression du rappel
|
|
||||||
@_reminderLoop.before_loop
|
|
||||||
async def __avant_reminderLoop(self):
|
|
||||||
await self.client.wait_until_ready()
|
|
||||||
|
|
||||||
@commands.command(name='reminderlist', aliases=["remindlist", "rl", "rappeliste"])
|
|
||||||
async def _reminderlist(self, ctx, *arg):
|
|
||||||
"""Affiche la liste des rappels d'un utilisateur.\n ➡ Syntaxe: {PREFIX}reminderlist/rl/remindlist/rappeliste [utilisateur]"""
|
|
||||||
_, fromSlash, arg = isSlash(arg)
|
|
||||||
utilisateur = ctx.author.id
|
|
||||||
page = 1
|
|
||||||
if len(arg) > 0:
|
|
||||||
try:
|
|
||||||
utilisateur = mentionToUser(getMentionInString(arg[0])[0])
|
|
||||||
except:
|
|
||||||
try:
|
|
||||||
page = int(arg[0])
|
|
||||||
except:
|
|
||||||
return await mySendHidden(ctx, fromSlash, "Veuillez renseigné un utilisateur ou un numéro de page valide.")
|
|
||||||
|
|
||||||
reminders = Reminder().listeReminder(utilisateur, ctx.guild.id)
|
|
||||||
if fromSlash != True:
|
|
||||||
await ctx.message.add_reaction(emoji = '✅')
|
|
||||||
|
|
||||||
pageMAX = -(-len(reminders) // 5)
|
|
||||||
embed = discord.Embed(description = f"**Rappel{'s' if len(reminders) > 1 else ''} de <@{utilisateur}>** • Page {page}/{pageMAX}", color = discord.Colour.random())
|
|
||||||
embed.set_thumbnail(url = self.client.get_user(utilisateur).avatar_url_as(size = 64))
|
|
||||||
limit = 5 * page
|
|
||||||
if len(reminders) > 0 and page <= pageMAX:
|
|
||||||
curseur = limit - 4
|
|
||||||
for reminder in reminders[limit - 5:]:
|
|
||||||
if curseur <= limit:
|
|
||||||
texte = reminder[0]
|
|
||||||
if len(texte) > 1024:
|
|
||||||
texte = f"{texte[:1021]}..."
|
|
||||||
expiration = reminder[2] - int(nowUTC())
|
|
||||||
if expiration > 0:
|
|
||||||
expiration = f"Expire dans {timedeltaToString(expiration)}"
|
|
||||||
else:
|
|
||||||
expiration = f"A déjà expiré."
|
|
||||||
embed.add_field(value = texte, name = f"#{reminder[3]} • Fais le {timestampScreen(intToDatetime(reminder[1]))}\n{expiration}", inline = False)
|
|
||||||
curseur += 1
|
|
||||||
else:
|
|
||||||
embed.add_field(name = "\u200b", value = f"L'utilisateur n'a aucun rappel en attente ou page n°{page} vide !")
|
|
||||||
embed.set_footer(text = "Les rappels qui ont déjà expirés vont apparaître dans quelques instants.\nIls peuvent avoir jusqu'à 1 minute de retard maximum.")
|
|
||||||
await ctx.send(embed = embed)
|
|
||||||
@cog_ext.cog_slash(name="reminderlist", description = "Affiche la liste des rappels d'un utilisateur.")
|
|
||||||
async def __reminderlist(self, ctx, userorpage = None):
|
|
||||||
if userorpage == None:
|
|
||||||
return await self._reminderlist(ctx, True)
|
|
||||||
else:
|
|
||||||
return await self._reminderlist(ctx, userorpage, True)
|
|
||||||
|
|
||||||
@commands.command(name='reminderdelete', aliases=["reminddelete", "rd"])
|
|
||||||
async def _reminderdelete(self, ctx, *id):
|
|
||||||
"""Suppprime un rappel.\n ➡ Syntaxe: {PREFIX}reminderdelete/rd <id>"""
|
|
||||||
id, fromSlash, _ = isSlash(id)
|
|
||||||
if id:
|
|
||||||
try:
|
|
||||||
id = int(id)
|
|
||||||
except:
|
|
||||||
return await mySendHidden(ctx, fromSlash, "L'ID renseigné n'est pas valide.")
|
|
||||||
else:
|
|
||||||
return await ctx.send("Veuillez renseigner un ID.")
|
|
||||||
|
|
||||||
verification = Reminder().appartenanceReminder(ctx.author.id, id, ctx.guild.id)
|
|
||||||
if verification:
|
|
||||||
Reminder().suppressionReminder(id)
|
|
||||||
if fromSlash != True:
|
|
||||||
await ctx.message.add_reaction(emoji = '✅')
|
|
||||||
return await ctx.send(f"Reminder **#{id}** supprimé !")
|
|
||||||
else:
|
|
||||||
if fromSlash != True:
|
|
||||||
await ctx.message.add_reaction(emoji = '❌')
|
|
||||||
return await mySendHidden(ctx, fromSlash, "Rappel non trouvé, pas sur le bon serveur ou qui ne vous appartiens pas.")
|
|
||||||
@cog_ext.cog_slash(name="reminderdelete", description = "Suppprime un rappel.")
|
|
||||||
async def __reminderdelete(self, ctx, id):
|
|
||||||
return await self._reminderdelete(ctx, id, True)
|
|
||||||
|
|
||||||
@commands.command(name='changelogs', aliases=["changelog", "changement", "changements"])
|
@commands.command(name='changelogs', aliases=["changelog", "changement", "changements"])
|
||||||
async def _changelogs(self, ctx, *version):
|
async def _changelogs(self, ctx, *version):
|
||||||
"""Affiche les changements de la dernière version ou d'une version précise.\n ➡ Syntaxe: {PREFIX}changelogs/changelog/changement/changements [version]"""
|
"""Affiche les changements de la dernière version ou d'une version précise.\n ➡ Syntaxe: {PREFIX}changelogs/changelog/changement/changements [version]"""
|
||||||
|
|
Reference in a new issue