move loop to top of file
This commit is contained in:
parent
5ca258ef4f
commit
2b9edd0f4e
1 changed files with 56 additions and 56 deletions
|
@ -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]"""
|
||||
|
|
Reference in a new issue