ajout reminder dans les DM

This commit is contained in:
Mylloon 2021-06-15 20:37:58 +02:00
parent 8c0b1f8ec2
commit 9b77418728
2 changed files with 15 additions and 10 deletions

View file

@ -492,17 +492,19 @@ class Utils(commands.Cog):
embed = discord.Embed(color = 0xC41B1B) embed = discord.Embed(color = 0xC41B1B)
extrarg = 0 extrarg = 0
guildID = ctx.guild.id # can be set to 0 if its a DM message, so it can be see from anywhere
if not reminder: if not reminder:
reminder = "Notification" reminder = "Notification"
if time == "help": if time == "help":
seconds = 0 seconds = 0
else: else:
if time.lower().endswith("@"): if time.endswith("@"):
time = time[:-1] time = time[:-1]
extrarg = 1 extrarg = 1
if time.lower().endswith("P"): if time.lower().endswith("p") or time.lower().endswith("d"):
time = time[:-1] time = time[:-1]
extrarg = 2 extrarg = 2
guildID = 0
seconds = stringTempsVersSecondes(time) seconds = stringTempsVersSecondes(time)
if type(seconds) != int: if type(seconds) != int:
if fromSlash != True: if fromSlash != True:
@ -512,14 +514,14 @@ class Utils(commands.Cog):
embed.add_field(name="Attention", value= 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). \ "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 `@` 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." \nMet un `P` ou `D` accolée au temps pour que le bot te DM au lieu de t'envoyer un message dans ce salon."
) )
else: else:
now = int(nowUTC()) now = int(nowUTC())
messageID = None messageID = None
if fromSlash != True: if fromSlash != True:
messageID = ctx.message.id messageID = ctx.message.id
Reminder().ajoutReminder(messageID, ctx.channel.id, extrarg, reminder, now, now + seconds, ctx.author.id, ctx.guild.id) Reminder().ajoutReminder(messageID, ctx.channel.id, extrarg, reminder, now, now + seconds, ctx.author.id, guildID)
return await ctx.send(f"Ok, je t'en parles dans {timedeltaToString(seconds)} avec 1m de retard maximum.") return await ctx.send(f"Ok, je t'en parles dans {timedeltaToString(seconds)} avec 1m de retard maximum.")
await ctx.send(embed = embed) await ctx.send(embed = embed)
@_reminder.error @_reminder.error
@ -541,7 +543,14 @@ class Utils(commands.Cog):
userID = expired[4] # personne qui a fait le rappel userID = expired[4] # personne qui a fait le rappel
channel = self.client.get_channel(expired[0]) # salon du message 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: # si le salon n'existe plus 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) 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]) # suppression du rappel return Reminder().suppressionReminder(expired[5]) # suppression du rappel
@ -572,10 +581,6 @@ class Utils(commands.Cog):
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) # envoie du rappel await channel.send(message, embed = finalEmbed) # envoie du rappel
except: # les DM sont fermés except: # les DM sont fermés

View file

@ -44,7 +44,7 @@ class Reminder(Database):
"""Retourne la liste des reminders d'un utilisateur.""" """Retourne la liste des reminders d'un utilisateur."""
requete = """ requete = """
SELECT reminder_str, creation_int, expiration_int, id FROM reminder SELECT reminder_str, creation_int, expiration_int, id FROM reminder
WHERE user_id = ? AND guild_id = ? WHERE user_id = ? AND (guild_id = ? OR guild_id = 0)
""" """
return self.affichageResultat(self.requete(requete, [userID, guildID])) return self.affichageResultat(self.requete(requete, [userID, guildID]))