ajout du reminderlist
This commit is contained in:
parent
c249ece3a5
commit
ca845fe704
2 changed files with 70 additions and 25 deletions
|
@ -2,22 +2,22 @@ import discord
|
||||||
import time
|
import time
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import shlex
|
||||||
from discord.ext import commands, tasks
|
from discord.ext import commands, tasks
|
||||||
from random import randint, shuffle
|
from random import randint, shuffle
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime
|
||||||
from pytz import timezone
|
from pytz import timezone
|
||||||
from discord_slash import cog_ext
|
from discord_slash import cog_ext
|
||||||
import shlex
|
from utils.reminder import Reminder
|
||||||
from utils.core import map_list_among_us, get_age, getURLsInString, getMentionInString, cleanCodeStringWithMentionAndURLs
|
from utils.core import map_list_among_us, get_age, getURLsInString, getMentionInString, cleanCodeStringWithMentionAndURLs
|
||||||
from utils.core import cleanUser, userOrNick, ageLayout, stringTempsVersSecondes, timedeltaToString, intToTimestamp, nowTimestampUTC
|
from utils.core import cleanUser, userOrNick, ageLayout, stringTempsVersSecondes, timedeltaToString, intToTimestamp, nowTimestampUTC
|
||||||
from utils.reminder import Reminder
|
from utils.core import timestampFR
|
||||||
|
|
||||||
def setup(client):
|
def setup(client):
|
||||||
client.add_cog(Utils(client))
|
client.add_cog(Utils(client))
|
||||||
|
|
||||||
class Utils(commands.Cog):
|
class Utils(commands.Cog):
|
||||||
"""Commandes essentielles."""
|
"""Commandes essentielles."""
|
||||||
|
|
||||||
def __init__(self, client):
|
def __init__(self, client):
|
||||||
self.client = client
|
self.client = client
|
||||||
self.customTimezone = os.environ['TIMEZONE']
|
self.customTimezone = os.environ['TIMEZONE']
|
||||||
|
@ -140,6 +140,7 @@ class Utils(commands.Cog):
|
||||||
await ctx.send(embed = embed)
|
await ctx.send(embed = embed)
|
||||||
@_calc.error
|
@_calc.error
|
||||||
async def _calc_error(self, ctx, error):
|
async def _calc_error(self, ctx, error):
|
||||||
|
print(error)
|
||||||
await ctx.send("Tu n'as pas spécifié de calcul.")
|
await ctx.send("Tu n'as pas spécifié de calcul.")
|
||||||
@cog_ext.cog_slash(name="calc", description = "Calculatrice.")
|
@cog_ext.cog_slash(name="calc", description = "Calculatrice.")
|
||||||
async def __calc(self, ctx, calcul):
|
async def __calc(self, ctx, calcul):
|
||||||
|
@ -150,44 +151,45 @@ class Utils(commands.Cog):
|
||||||
"""Informations pour bien éditer son texte."""
|
"""Informations pour bien éditer son texte."""
|
||||||
if fromSlash == None:
|
if fromSlash == None:
|
||||||
fromSlash = False
|
fromSlash = False
|
||||||
syntaxe = "-----------------------------------------------------\n"
|
separateur = "-----------------------------------------------------\n"
|
||||||
syntaxe += discord.utils.escape_markdown("```Js\n")
|
syntaxe = separateur
|
||||||
|
syntaxe += discord.utils.escape_markdown("```js\n")
|
||||||
syntaxe += discord.utils.escape_markdown("//code en js (possible de remplacer 'js' par d'autres languages . adaptez le !)\n")
|
syntaxe += discord.utils.escape_markdown("//code en js (possible de remplacer 'js' par d'autres languages . adaptez le !)\n")
|
||||||
syntaxe += discord.utils.escape_markdown('console.log("hi");\n')
|
syntaxe += discord.utils.escape_markdown('console.log("hi");\n')
|
||||||
syntaxe += discord.utils.escape_markdown("```\n")
|
syntaxe += discord.utils.escape_markdown("```\n")
|
||||||
syntaxe += "```Js\n"
|
syntaxe += "```js\n"
|
||||||
syntaxe += "//code en js (possible de remplacer 'js' par d'autres languages . adaptez le !)\n"
|
syntaxe += "//code en js (possible de remplacer 'js' par d'autres languages . adaptez le !)\n"
|
||||||
syntaxe += 'console.log("hi");\n'
|
syntaxe += 'console.log("hi");\n'
|
||||||
syntaxe += "```\n"
|
syntaxe += "```\n"
|
||||||
syntaxe += "Si ton code est trop long, mets le sur <https://pastebin.com/>\n"
|
syntaxe += "Si ton code est trop long, mets le sur <https://pastebin.com/>\n"
|
||||||
syntaxe += "-----------------------------------------------------\n"
|
syntaxe += separateur
|
||||||
syntaxe += discord.utils.escape_markdown("`code sur une seule ligne`\n")
|
syntaxe += discord.utils.escape_markdown("`code sur une seule ligne`\n")
|
||||||
syntaxe += "`code sur une seule ligne`\n"
|
syntaxe += "`code sur une seule ligne`\n"
|
||||||
syntaxe += "-----------------------------------------------------\n"
|
syntaxe += separateur
|
||||||
syntaxe += discord.utils.escape_markdown("*texte en italique*\n")
|
syntaxe += discord.utils.escape_markdown("*texte en italique*\n")
|
||||||
syntaxe += "*texte en italique*\n"
|
syntaxe += "*texte en italique*\n"
|
||||||
syntaxe += "-----------------------------------------------------\n"
|
syntaxe += separateur
|
||||||
syntaxe += discord.utils.escape_markdown("**text en gras**\n")
|
syntaxe += discord.utils.escape_markdown("**text en gras**\n")
|
||||||
syntaxe += "**text en gras**\n"
|
syntaxe += "**text en gras**\n"
|
||||||
syntaxe += "-----------------------------------------------------\n"
|
syntaxe += separateur
|
||||||
syntaxe += discord.utils.escape_markdown("<<https://www.youtube.com/watch?v=GhuYKL5NUYg>>\n")
|
syntaxe += discord.utils.escape_markdown("<<https://www.youtube.com/watch?v=GhuYKL5NUYg>>\n")
|
||||||
syntaxe += "Un lien entre crochet, ça empêche Discord de rajouté son intégration automatique (mais le lien fonctionnera toujours).\n"
|
syntaxe += "Un lien entre crochet, ça empêche Discord de rajouté son intégration automatique (mais le lien fonctionnera toujours).\n"
|
||||||
syntaxe += "-----------------------------------------------------\n"
|
syntaxe += separateur
|
||||||
syntaxe += discord.utils.escape_markdown("__texte souligné__\n")
|
syntaxe += discord.utils.escape_markdown("__texte souligné__\n")
|
||||||
syntaxe += "__texte souligné__\n"
|
syntaxe += "__texte souligné__\n"
|
||||||
syntaxe += "-----------------------------------------------------\n"
|
syntaxe += separateur
|
||||||
syntaxe += discord.utils.escape_markdown("~~texte barré~~\n")
|
syntaxe += discord.utils.escape_markdown("~~texte barré~~\n")
|
||||||
syntaxe += "~~texte barré~~\n"
|
syntaxe += "~~texte barré~~\n"
|
||||||
syntaxe += "-----------------------------------------------------\n"
|
syntaxe += separateur
|
||||||
syntaxe += discord.utils.escape_markdown("~~__***text en italique-gras-souligné-barré***__~~\n")
|
syntaxe += discord.utils.escape_markdown("~~__***text en italique-gras-souligné-barré***__~~\n")
|
||||||
syntaxe += "~~__***text en italique-gras-souligné-barré***__~~\n"
|
syntaxe += "~~__***text en italique-gras-souligné-barré***__~~\n"
|
||||||
syntaxe += "-----------------------------------------------------\n"
|
syntaxe += separateur
|
||||||
syntaxe += discord.utils.escape_markdown("\:joy: <- l'emoji ne va pas fonctionné grâce au \ \n")
|
syntaxe += discord.utils.escape_markdown("\:joy: <- l'emoji ne va pas fonctionné grâce au \ \n")
|
||||||
syntaxe += "\:joy: <- l'emoji ne va pas fonctionné grâce au \ \n"
|
syntaxe += "\:joy: <- l'emoji ne va pas fonctionné grâce au \ \n"
|
||||||
syntaxe += "-----------------------------------------------------\n"
|
syntaxe += separateur
|
||||||
syntaxe += discord.utils.escape_markdown("> cette ligne est cité\npas celle là\n")
|
syntaxe += discord.utils.escape_markdown("> cette ligne est cité\npas celle là\n")
|
||||||
syntaxe += "> cette ligne est cité\npas celle là\n"
|
syntaxe += "> cette ligne est cité\npas celle là\n"
|
||||||
syntaxe += "-----------------------------------------------------\n"
|
syntaxe += separateur
|
||||||
syntaxe += discord.utils.escape_markdown(">>> cette ligne est cité\ncelle là aussi (et elles le seront toutes!)\n")
|
syntaxe += discord.utils.escape_markdown(">>> cette ligne est cité\ncelle là aussi (et elles le seront toutes!)\n")
|
||||||
syntaxe += ">>> cette ligne est cité\ncelle là aussi (et elles le seront toutes!)\n"
|
syntaxe += ">>> cette ligne est cité\ncelle là aussi (et elles le seront toutes!)\n"
|
||||||
try:
|
try:
|
||||||
|
@ -503,7 +505,7 @@ class Utils(commands.Cog):
|
||||||
if fromSlash != True:
|
if fromSlash != True:
|
||||||
messageID = ctx.message.id
|
messageID = ctx.message.id
|
||||||
Reminder().ajoutReminder(messageID, ctx.channel.id, mention, reminder, now, now + seconds, ctx.author.id)
|
Reminder().ajoutReminder(messageID, ctx.channel.id, mention, reminder, now, now + seconds, ctx.author.id)
|
||||||
return await ctx.send(f"Ok, je t'en parles dans {timedeltaToString(seconds)} ± 1min !")
|
return await ctx.send(f"Ok, je t'en parles dans {timedeltaToString(seconds)} avec 1min de retard maximum.")
|
||||||
await ctx.send(embed = embed)
|
await ctx.send(embed = embed)
|
||||||
@cog_ext.cog_slash(name="reminder", description = "Met en place un rappel.")
|
@cog_ext.cog_slash(name="reminder", description = "Met en place un rappel.")
|
||||||
async def __reminder(self, ctx, time, reminder = None):
|
async def __reminder(self, ctx, time, reminder = None):
|
||||||
|
@ -539,7 +541,46 @@ class Utils(commands.Cog):
|
||||||
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])
|
||||||
await channel.send(message, embed = finalEmbed)
|
await channel.send(message, embed = finalEmbed)
|
||||||
Reminder().suppressionReminder(expired[5])
|
Reminder().suppressionReminder(expired[5])
|
||||||
|
|
||||||
@_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()
|
||||||
|
|
||||||
|
@commands.command(name='reminderlist', aliases=["remindlist", "rl", "rappeliste"])
|
||||||
|
async def _reminderlist(self, ctx, *utilisateur):
|
||||||
|
"""Affiche la liste des rappels d'un utilisateur.\n ➡ Syntaxe: {PREFIX}reminderlist/rl/remindlist/rappeliste [utilisateur] """
|
||||||
|
fromSlash = False
|
||||||
|
if len(utilisateur) > 0:
|
||||||
|
if utilisateur[-1] == True:
|
||||||
|
fromSlash = utilisateur[-1]
|
||||||
|
utilisateur = utilisateur[:-1]
|
||||||
|
if len(utilisateur) > 0:
|
||||||
|
utilisateur = int(getMentionInString(utilisateur[0])[0][3:][:-1])
|
||||||
|
else:
|
||||||
|
utilisateur = ctx.author.id
|
||||||
|
|
||||||
|
reminders = Reminder().listeReminder(utilisateur)
|
||||||
|
if fromSlash != True:
|
||||||
|
await ctx.message.add_reaction(emoji = '✅')
|
||||||
|
embed = discord.Embed(description = f"**Rappel{'s' if len(reminders) > 1 else ''} de <@{utilisateur}>**", color = discord.Colour.random())
|
||||||
|
embed.set_thumbnail(url = self.client.get_user(utilisateur).avatar_url_as(size = 32))
|
||||||
|
if len(reminders) > 0:
|
||||||
|
for reminder in reminders:
|
||||||
|
texte = reminder[0]
|
||||||
|
if len(texte) > 1024:
|
||||||
|
texte = f"{texte[:1021]}..."
|
||||||
|
expiration = reminder[2] - int(nowTimestampUTC())
|
||||||
|
if expiration > 0:
|
||||||
|
expiration = f"Expire dans {timedeltaToString(expiration)} +1min de retard max."
|
||||||
|
else:
|
||||||
|
expiration = f"A déjà expiré."
|
||||||
|
embed.add_field(value = texte, name = f"Fais le {timestampFR(intToTimestamp(reminder[1]))}\n{expiration}", inline = False)
|
||||||
|
else:
|
||||||
|
embed.add_field(name = "\u200b", value = "Vous n'avez aucun rappels en attente !")
|
||||||
|
await ctx.send(embed = embed)
|
||||||
|
|
||||||
|
@cog_ext.cog_slash(name="reminderlist", description = "Affiche la liste des rappels d'un utilisateur.")
|
||||||
|
async def __reminderlist(self, ctx, utilisateur = None):
|
||||||
|
if utilisateur == None:
|
||||||
|
return await self._reminderlist(ctx, True)
|
||||||
|
else:
|
||||||
|
return await self._reminderlist(ctx, utilisateur, True)
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Reminder(Database):
|
||||||
"""
|
"""
|
||||||
self.requete(requete)
|
self.requete(requete)
|
||||||
|
|
||||||
def ajoutReminder(self, messageID, channelID, mention, reminder, creation, expiration, userID):
|
def ajoutReminder(self, messageID = int, channelID = int, mention = int, reminder = str, creation = int, expiration = int, userID = int):
|
||||||
"""Ajoute un reminder"""
|
"""Ajoute un reminder"""
|
||||||
requete = """
|
requete = """
|
||||||
INSERT INTO reminder (
|
INSERT INTO reminder (
|
||||||
|
@ -28,7 +28,7 @@ class Reminder(Database):
|
||||||
"""
|
"""
|
||||||
self.requete(requete, (messageID, channelID, mention, reminder, creation, expiration, userID))
|
self.requete(requete, (messageID, channelID, mention, reminder, creation, expiration, userID))
|
||||||
|
|
||||||
def suppressionReminder(self, id):
|
def suppressionReminder(self, id = int):
|
||||||
"""Supprime un reminder"""
|
"""Supprime un reminder"""
|
||||||
requete = """
|
requete = """
|
||||||
DELETE FROM reminder
|
DELETE FROM reminder
|
||||||
|
@ -36,11 +36,15 @@ class Reminder(Database):
|
||||||
"""
|
"""
|
||||||
self.requete(requete, [id])
|
self.requete(requete, [id])
|
||||||
|
|
||||||
def listeReminder(self, userID = None):
|
def listeReminder(self, userID = int):
|
||||||
"""Retourne la liste des reminders, si un userID est mentionné, retourne la liste de cet utilisateur"""
|
"""Retourne la liste des reminders d'un utilisateur"""
|
||||||
return
|
requete = """
|
||||||
|
SELECT reminder_str, creation_int, expiration_int FROM reminder
|
||||||
|
WHERE user_id = ?
|
||||||
|
"""
|
||||||
|
return self.affichageResultat(self.requete(requete, [userID]))
|
||||||
|
|
||||||
def recuperationExpiration(self, time):
|
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, mention_bool, reminder_str, creation_int, user_id, id, message_id FROM reminder
|
SELECT channel_id, mention_bool, reminder_str, creation_int, user_id, id, message_id FROM reminder
|
||||||
|
|
Reference in a new issue