From 6dab13b309d8739223c9e17ee934fa8c781e4f59 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Wed, 28 Jul 2021 21:47:59 +0200 Subject: [PATCH] Adding page to reminderlist --- src/cogs/utils.py | 55 +++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/src/cogs/utils.py b/src/cogs/utils.py index 0c3e832..3c04fdf 100644 --- a/src/cogs/utils.py +++ b/src/cogs/utils.py @@ -562,43 +562,52 @@ class Utils(commands.Cog): await self.client.wait_until_ready() @commands.command(name='reminderlist', aliases=["remindlist", "rl", "rappeliste"]) - async def _reminderlist(self, ctx, *utilisateur): + async def _reminderlist(self, ctx, *arg): """Affiche la liste des rappels d'un utilisateur.⁢⁢⁢⁢⁢\n ➡ Syntaxe: {PREFIX}reminderlist/rl/remindlist/rappeliste [utilisateur]""" - _, fromSlash, utilisateur = isSlash(utilisateur) - if len(utilisateur) > 0: + _, fromSlash, arg = isSlash(arg) + utilisateur = ctx.author.id + page = 1 + if len(arg) > 0: try: - utilisateur = mentionToUser(getMentionInString(utilisateur[0])[0]) + utilisateur = mentionToUser(getMentionInString(arg[0])[0]) except: - return await mySendHidden(ctx, fromSlash, "L'utilisateur renseigné n'a pas été trouvé.") - else: - utilisateur = ctx.author.id + 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 = '✅') - embed = discord.Embed(description = f"**Rappel{'s' if len(reminders) > 1 else ''} de <@{utilisateur}>**", color = discord.Colour.random()) + + 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)) - if len(reminders) > 0: - for reminder in reminders: - 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) + 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 = "Vous n'avez aucun rappel en attente !") + 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, user = None): - if user == None: + async def __reminderlist(self, ctx, userorpage = None): + if userorpage == None: return await self._reminderlist(ctx, True) else: - return await self._reminderlist(ctx, user, True) + return await self._reminderlist(ctx, userorpage, True) @commands.command(name='reminderdelete', aliases=["reminddelete", "rd"]) async def _reminderdelete(self, ctx, *id):