From 2b9edd0f4ebd902bbba3bcacdcdbf70abc6832b8 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Thu, 29 Jul 2021 20:45:39 +0200 Subject: [PATCH] move loop to top of file --- src/cogs/reminder.py | 112 +++++++++++++++++++++---------------------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/src/cogs/reminder.py b/src/cogs/reminder.py index 823e75c..a36a008 100644 --- a/src/cogs/reminder.py +++ b/src/cogs/reminder.py @@ -13,6 +13,62 @@ class ReminderDiscord(commands.Cog): def __init__(self, client): self.client = client self._reminderLoop.start() + + @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='reminder', aliases=["remind", "remindme", "rappel"]) async def _reminder(self, ctx, time, *reminder): @@ -72,62 +128,6 @@ class ReminderDiscord(commands.Cog): 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]"""