move loop to top of file

This commit is contained in:
Mylloon 2021-07-29 20:45:39 +02:00
parent 5ca258ef4f
commit 2b9edd0f4e

View file

@ -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]"""