ajout commentaires + fix bug quand message supprimé + preparation ajout nouvelle feature

This commit is contained in:
Mylloon 2021-06-15 09:22:34 +02:00
parent d473651a6c
commit c92bfb93d6

View file

@ -500,13 +500,16 @@ class Utils(commands.Cog):
if time.lower().endswith("@"): if time.lower().endswith("@"):
time = time[:-1] time = time[:-1]
extrarg = 1 extrarg = 1
if time.lower().endswith("P"):
time = time[:-1]
extrarg = 2
seconds = stringTempsVersSecondes(time) seconds = stringTempsVersSecondes(time)
if type(seconds) != int: if type(seconds) != int:
if fromSlash != True: if fromSlash != True:
await ctx.message.add_reaction(emoji = '') await ctx.message.add_reaction(emoji = '')
return await ctx.send(seconds) return await ctx.send(seconds)
if seconds == 0: if seconds == 0:
embed.add_field(name="Attention", value="Format pour le temps : `d` pour jour, `h` pour heure, `m` pour minute, `s` pour seconde\nMet un `@` accolée à l'unité pour mentionner les gens mentionner dans ton message.") 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 > 7776000: # 90 * 60 * 60 * 24 elif seconds > 7776000: # 90 * 60 * 60 * 24
embed.add_field(name="Attention", value="Tu as spécifié une durée trop longue, la durée maximum étant de 90 jours.") embed.add_field(name="Attention", value="Tu as spécifié une durée trop longue, la durée maximum étant de 90 jours.")
else: else:
@ -530,43 +533,51 @@ class Utils(commands.Cog):
@tasks.loop(minutes = 1) @tasks.loop(minutes = 1)
async def _reminderLoop(self): async def _reminderLoop(self):
expiration = Reminder().recuperationExpiration(int(nowUTC())) expiration = Reminder().recuperationExpiration(int(nowUTC())) # on récupères les éléments expirés
for expired in expiration: for expired in expiration: # on regarde tout les éléments expirés
reminder = expired[2] reminder = expired[2] # message
userID = expired[4] userID = expired[4] # personne qui a fait le rappel
channel = self.client.get_channel(expired[0]) channel = self.client.get_channel(expired[0]) # salon du message
finalEmbed = discord.Embed(description = cleanCodeStringWithMentionAndURLs(reminder), timestamp = intToDatetime(expired[3]), color = discord.Colour.random()) finalEmbed = discord.Embed(description = cleanCodeStringWithMentionAndURLs(reminder), timestamp = intToDatetime(expired[3]), color = discord.Colour.random())
if channel == None: if channel == None: # si le salon n'existe plus
user = self.client.get_user(userID) user = self.client.get_user(userID)
if user == None: # si l'utilisateur n'est pas trouvé if user == None: # si l'utilisateur n'est pas trouvé
return Reminder().suppressionReminder(expired[5]) return Reminder().suppressionReminder(expired[5]) # suppression du rappel
channel = await user.create_dm() channel = await user.create_dm() # envoie en DM
userID = None userID = None
finalEmbed.add_field(name = "Info", value = "Message envoyé en DM car le salon n'est plus disponible.") finalEmbed.add_field(name = "Info", value = "Message envoyé en DM car le salon n'est plus disponible.")
else: else:
sourceMessage = expired[6] sourceMessage = expired[6]
if sourceMessage != None: # vérification message avec slash command
try:
sourceMessage = await channel.fetch_message(sourceMessage) # récupération message
except:
sourceMessage = None # message a été supprimé
if sourceMessage != None: if sourceMessage != None:
sourceMessage = await channel.fetch_message(sourceMessage) await sourceMessage.add_reaction(emoji = '') # ajout réaction
await sourceMessage.add_reaction(emoji = '')
finalEmbed.set_footer(text=f"Message d'il y a {timedeltaToString(int(nowUTC()) - expired[3])}") finalEmbed.set_footer(text=f"Message d'il y a {timedeltaToString(int(nowUTC()) - expired[3])}")
links = "" links = ""
findedURLs = getURLsInString(reminder) findedURLs = getURLsInString(reminder)
for i in range(0, len(findedURLs)): 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]}) · " links += f"[Lien {i + 1}]({findedURLs[i]}) · "
if len(findedURLs) > 0: if len(findedURLs) > 0:
finalEmbed.add_field(name = f"Lien{'s' if len(findedURLs) > 1 else ''}", value = links[:-3]) finalEmbed.add_field(name = f"Lien{'s' if len(findedURLs) > 1 else ''}", value = links[:-3])
message = "" message = ""
if userID != None: if userID != None: # metion de l'utilisateur si le message n'est pas en DM
message = f"<@{userID}>" message = f"<@{userID}>"
if expired[1] == 1: if expired[1] == 1: # s'il faut mentionner les personnes dans le message
mentionList = getMentionInString(reminder) mentionList = getMentionInString(reminder)
for i in mentionList: for i in mentionList:
message += f" {i}" message += f" {i}"
elif expired[1] == 2: # s'il faut envoyer en DM le message
mentionList = getMentionInString(reminder)
for i in mentionList:
message += f" {i}x"
try: try:
await channel.send(message, embed = finalEmbed) await channel.send(message, embed = finalEmbed) # envoie du rappel
except: # les DM sont fermés except: # les DM sont fermés
return Reminder().suppressionReminder(expired[5]) pass
Reminder().suppressionReminder(expired[5]) return Reminder().suppressionReminder(expired[5]) # suppression du rappel
@_reminderLoop.before_loop @_reminderLoop.before_loop
async def __avant_reminderLoop(self): async def __avant_reminderLoop(self):
await self.client.wait_until_ready() await self.client.wait_until_ready()