send reminder in DM if user left guild

This commit is contained in:
Mylloon 2021-08-19 10:42:31 +02:00
parent 86da4f6e70
commit 2935c6da83
2 changed files with 18 additions and 13 deletions

View file

@ -25,21 +25,19 @@ class ReminderDiscord(commands.Cog, name="Reminder"):
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())
guild = self.client.get_guild(expired[7])
if expired[1] == 2 or channel == None or guild.get_member(expired[4]) is None:
user = self.client.get_user(userID)
if user == None: # si l'utilisateur n'est pas trouvé
return Reminder().suppressionReminder(expired[5]) # suppression du rappel
if expired[1] == 2: # s'il faut envoyer en DM le message if expired[1] == 2: # s'il faut envoyer en DM le message
user = self.client.get_user(userID) channel, userID, sourceMessage = await self.reminderCheckDM(userID, expired[5])
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 elif channel == None: # si le salon n'existe plus
user = self.client.get_user(userID) channel, userID, sourceMessage = await self.reminderCheckDM(userID, expired[5])
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.") finalEmbed.add_field(name = "Info", value = "Message envoyé en DM car le salon n'est plus disponible.")
elif guild.get_member(expired[4]) is None: # si l'utilisateur n'est plus dans la guild
channel, userID, sourceMessage = await self.reminderCheckDM(userID, expired[5])
finalEmbed.add_field(name = "Info", value = f"Message envoyé en DM car vous avez quitté `{guild.name}`.")
else: else:
sourceMessage = expired[6] sourceMessage = expired[6]
if sourceMessage != None: # vérification message avec slash command et que si c'est pas en DM if sourceMessage != None: # vérification message avec slash command et que si c'est pas en DM
@ -73,6 +71,13 @@ class ReminderDiscord(commands.Cog, name="Reminder"):
"""Wait to start the loop until the whole bot is ready""" """Wait to start the loop until the whole bot is ready"""
await self.client.wait_until_ready() await self.client.wait_until_ready()
async def reminderCheckDM(self, userID, reminderID):
user = self.client.get_user(userID)
if user == None: # si l'utilisateur n'est pas trouvé
return Reminder().suppressionReminder(reminderID) # suppression du rappel
channel = await user.create_dm() # envoie en DM
return channel, None, None # plus de mention et plus de message source
@commands.command(name='reminder', aliases=["remind", "remindme", "rappel"]) @commands.command(name='reminder', aliases=["remind", "remindme", "rappel"])
async def _reminder(self, ctx, time, *reminder): async def _reminder(self, ctx, time, *reminder):
"""Met en place un rappel.\n ➡ Syntaxe: {PREFIX}reminder/remind/remindme/rappel <temps>[@] [message]""" """Met en place un rappel.\n ➡ Syntaxe: {PREFIX}reminder/remind/remindme/rappel <temps>[@] [message]"""

View file

@ -55,7 +55,7 @@ class Reminder(Database):
def recuperationExpiration(self, time: int): def recuperationExpiration(self, time: int):
"""Récupère les reminders qui sont arrivés à expiration et ses infos.""" """Récupère les reminders qui sont arrivés à expiration et ses infos."""
requete = """ requete = """
SELECT channel_id, extrarg_id, reminder_str, creation_int, user_id, id, message_id FROM reminder SELECT channel_id, extrarg_id, reminder_str, creation_int, user_id, id, message_id, guild_id FROM reminder
WHERE expiration_int < ? WHERE expiration_int < ?
""" """
return self.affichageResultat(self.requete(requete, time)) return self.affichageResultat(self.requete(requete, time))