diff --git a/src/cogs/fun.py b/src/cogs/fun.py index 196fdaf..0b51bff 100644 --- a/src/cogs/fun.py +++ b/src/cogs/fun.py @@ -3,7 +3,7 @@ from re import findall from discord.ext import commands from random import randint, choice from discord_slash import cog_ext -from utils.core import retirerDoublons, mentionToUser, isSlash +from utils.core import retirerDoublons, mentionToUser, isSlash, mySendHidden from utils.time import intToDatetime def setup(client): @@ -65,7 +65,7 @@ class Fun(commands.Cog): if users[0] == users[1]: if fromSlash != True: await ctx.message.add_reaction(emoji = '✅') - return await ctx.send("Je suis sûr que cette personne s'aime ! :angry:") + return await mySendHidden(ctx, fromSlash, "Je suis sûr que cette personne s'aime ! :angry:") if users[0].nick: user1 = list(users[0].nick) else: @@ -177,7 +177,7 @@ class Fun(commands.Cog): try: n = int(n) except: - return await ctx.send("Veuillez renseigner un chiffre valide.") + return await mySendHidden(ctx, fromSlash, "Veuillez renseigner un chiffre valide.") else: n = 10 diff --git a/src/cogs/games.py b/src/cogs/games.py index a15804b..9b81e80 100644 --- a/src/cogs/games.py +++ b/src/cogs/games.py @@ -3,7 +3,7 @@ import asyncio from discord.ext import commands from random import randint, choice from discord_slash import cog_ext -from utils.core import isSlash +from utils.core import isSlash, mySendHidden def setup(client): client.add_cog(Games(client)) @@ -37,7 +37,7 @@ class Games(commands.Cog): elif choix == "ciseaux" or choix == "ciseau": choix = ciseaux else: - return await ctx.send("Je n'ai pas compris ce que tu as joué, réessaie.") + return await mySendHidden(ctx, fromSlash, "Je n'ai pas compris ce que tu as joué, réessaie.") description = (f"{choix_jeu[choix][:-1]} VS {choix_jeu[ordi][:-1]}\n\n**" f"{('Égalité !', 'Tu as perdu !', 'Tu as gagné !')[(choix != ordi) + ((choix > ordi and ordi +1 == choix) or (choix < ordi and choix + ordi == 2))]}**") @@ -55,10 +55,12 @@ class Games(commands.Cog): return await self._chifumi(ctx, choix, True) @commands.command(name='plusoumoins', aliases = ['+ou-', '+-']) - async def _plusoumoins(self, ctx): + async def _plusoumoins(self, ctx, fromSlash = None): """Un plus ou moins entre 1 et 100.\n ➡ Syntaxe: {PREFIX}plusoumoins/+ou-/+-⁢⁢⁢⁢⁢""" + if fromSlash != True: + fromSlash = False if str(ctx.author.id) in self.guessing_game: - return await ctx.send("Tu es déjà en partie.") + return await mySendHidden(ctx, fromSlash, "Tu es déjà en partie.") guess = 5 self.guessing_game[str(ctx.author.id)] = guess number = randint(1, 100) @@ -102,7 +104,7 @@ class Games(commands.Cog): await ctx.send(f"T'as pas trouvé {ctx.author.mention}... dommage, c'était {number}.") @cog_ext.cog_slash(name="plusoumoins", description = "Un plus ou moins entre 1 et 100.") async def __plusoumoins(self, ctx): - await self._plusoumoins(ctx) + await self._plusoumoins(ctx, True) @commands.command(name='pileouface', aliases=['pf']) async def _pileouface(self, ctx, fromSlash = None): diff --git a/src/cogs/help.py b/src/cogs/help.py index 2e83bfb..34297a1 100644 --- a/src/cogs/help.py +++ b/src/cogs/help.py @@ -1,7 +1,7 @@ import discord from discord.ext import commands from discord_slash import cog_ext -from utils.core import isSlash +from utils.core import isSlash, mySendHidden def setup(client): client.add_cog(Help(client)) @@ -17,6 +17,7 @@ class Help(commands.Cog): """Affiche toutes les commandes du bot.\n ➡ Syntaxe: {PREFIX}help [catégorie]⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢""" _, fromSlash, cog = isSlash(cog) + erreur = False if not cog: # Liste des Cog halp = discord.Embed(title = 'Liste des catégories et commandes sans catégorie', description = f'Utilisez `{ctx.prefix}help [catégorie]` pour en savoir plus sur elles et leur commande.', @@ -42,6 +43,7 @@ class Help(commands.Cog): await ctx.send(embed = halp) else: # Avertissement si il y a trop d'arguments dans la variable cog if len(cog) > 1: + await ctx.message.add_reaction(emoji = '❌') halp = discord.Embed(title = 'Erreur !', description = "Tu as renseigné trop d'arguments !", color = 0xC41B1B) await ctx.send(embed = halp) else: # Liste des commandes avec cogs. @@ -59,12 +61,14 @@ class Help(commands.Cog): halp.add_field(name = f"`{ctx.prefix}{c.name}` - {str(c.help).split(backslash)[0]}", value = f"{''.join(cmds_help)}\u200b", inline = False) found = True if not found: # Rappel si le cog n'existe pas. - await ctx.message.add_reaction(emoji = '❌') + if fromSlash != True: + await ctx.message.add_reaction(emoji = '❌') halp = discord.Embed(title = 'Erreur !', description = f"Qu'est ce que {cog[0]} ?", color = 0xC41B1B) + erreur = True else: if fromSlash != True: await ctx.message.add_reaction(emoji = '✅') - await ctx.send('', embed = halp) + await mySendHidden(ctx, erreur, embed = halp) @cog_ext.cog_slash(name="help", description = "Affiche toutes les commandes du bot.") async def __help(self, ctx, cog = None): ctx.prefix = "/" diff --git a/src/cogs/internet.py b/src/cogs/internet.py index 924da3f..52c2cb2 100644 --- a/src/cogs/internet.py +++ b/src/cogs/internet.py @@ -5,7 +5,7 @@ from discord.ext import commands from random import choice from asyncpraw import Reddit from discord_slash import cog_ext -from utils.core import randomImage, isSlash +from utils.core import randomImage, isSlash, mySendHidden def setup(client): client.add_cog(Internet(client)) @@ -29,7 +29,7 @@ class Internet(commands.Cog): '2meirl4meirl', 'AdviceAnimals', 'weirdmemes', 'LeagueOfMemes']) if fromSlash != None and subredditchoix == "nsfw": # demande de nsfw sans passé par la commande appropriée - return await ctx.send(f"Désolé, tu demandes du nsfw... Fais plutôt **{ctx.prefix}sexe**.") + return await mySendHidden(ctx, fromSlash, f"Désolé, tu demandes du nsfw... Fais plutôt **{ctx.prefix}sexe**.") try: async with Reddit(client_id = environ['TOKEN_REDDIT_CLIENT_ID'], client_secret = environ['TOKEN_REDDIT_CLIENT_SECRET'], user_agent = f"disreddit /u/{environ['TOKEN_REDDIT_USER_AGENT']}, http://localhost:8080") as reddit: @@ -65,7 +65,7 @@ class Internet(commands.Cog): print(f"Error in _memes command = args: {args}, subreddit: {subredditchoix}, error: {error}") if fromSlash != True: await ctx.message.add_reaction(emoji = '❌') - return await ctx.send(f"Ce subreddit est interdit, mis en quarantaine ou n'existe pas. ({subredditchoix})") + return await mySendHidden(ctx, fromSlash, f"Ce subreddit est interdit, mis en quarantaine ou n'existe pas. ({subredditchoix})") @cog_ext.cog_slash(name="meme", description = "Envoie un meme de reddit.") async def __memes(self, ctx, subreddit = None): ctx.prefix = "/" @@ -132,7 +132,7 @@ class Internet(commands.Cog): else: if fromSlash != True: await ctx.message.add_reaction(emoji = '❌') - await ctx.send(f"Désolé mais je n'envois ce genre de message seulement dans les salons NSFW !") + await mySendHidden(ctx, fromSlash, f"Désolé mais je n'envois ce genre de message seulement dans les salons NSFW !") @cog_ext.cog_slash(name="sexe", description = "Envois une image coquine. (NSFW)") async def __sexe(self, ctx): return await self._sexe(ctx, True) diff --git a/src/cogs/school.py b/src/cogs/school.py index a07e472..c54bde5 100644 --- a/src/cogs/school.py +++ b/src/cogs/school.py @@ -1,7 +1,7 @@ import discord from discord.ext import commands from discord_slash import cog_ext -from utils.core import isSlash +from utils.core import isSlash, mySendHidden def setup(client): client.add_cog(School(client)) @@ -23,14 +23,14 @@ class School(commands.Cog): await ctx.message.add_reaction(emoji = "✅") limite_voice_channels = 7 if len(voice_channels) > limite_voice_channels and not voice_channel: - return await ctx.send(f"""Désolé mais il y a plus de {limite_voice_channels} salons vocaux sur ce serveur, utilisez plutôt `{ctx.prefix}appel {{ID salon vocal}}`. + return await mySendHidden(ctx, fromSlash, f"""Désolé mais il y a plus de {limite_voice_channels} salons vocaux sur ce serveur, utilisez plutôt `{ctx.prefix}appel {{ID salon vocal}}`. \nPour savoir comment récuperer l'id d'un salon vous pouvez faire `{ctx.prefix}getid`.""") if voice_channel: canal = self.client.get_channel(voice_channel) if canal.type.__str__() == "voice": voice_channels = [canal] else: - return await ctx.send("Tu as spécifié un channel textuelle et non vocal.") + return await mySendHidden(ctx, fromSlash, "Tu as spécifié un channel textuelle et non vocal.") if len(voice_channels) > 0: embed = discord.Embed(title = "Réagissez à ce message avec ✋ pour signaler votre présence.", description = f"(attention, je réagis aussi) — Demandeur : {ctx.author.mention}") for channel in voice_channels: @@ -51,7 +51,7 @@ class School(commands.Cog): message = await ctx.send("Aucun salon vocal dans ce serveur, réagissez à ce message avec ✋ pour signaler votre présence (attention, je réagis aussi).") await message.add_reaction(emoji = "✋") @_appel.error - async def _appel_error(self, ctx, error): + async def _appel_error(self, ctx, _): # if isinstance(error, commands.CheckFailure): # await ctx.send("Tu n'as pas la permission de faire cette commande, demande à un professeur.") # else: @@ -74,7 +74,7 @@ class School(commands.Cog): fromSlash = False if fromSlash != True: await ctx.message.add_reaction(emoji = '✅') - return await ctx.send("Explication sur comment récuperer l'ID d'un utilisateur/salon : https://cdn.discordapp.com/attachments/640312926892195842/780802253258358834/GetID.mp4") + return await mySendHidden(ctx, fromSlash, "Explication sur comment récuperer l'ID d'un utilisateur/salon : https://cdn.discordapp.com/attachments/640312926892195842/780802253258358834/GetID.mp4") @cog_ext.cog_slash(name="getid", description = "Tuto vidéo sur comment récupérer l'ID d'un utilisateur/salon⁢⁢⁢⁢⁢") async def __getid(self, ctx): return await self._getid(ctx, True) diff --git a/src/cogs/utils.py b/src/cogs/utils.py index c1ab702..1b8144c 100644 --- a/src/cogs/utils.py +++ b/src/cogs/utils.py @@ -5,7 +5,8 @@ from discord.ext import commands, tasks from random import randint, shuffle from discord_slash import cog_ext from utils.reminder import Reminder -from utils.core import map_list_among_us, getURLsInString, getMentionInString, cleanCodeStringWithMentionAndURLs, cleanUser, userOrNick, mentionToUser, getChangelogs, isSlash +from utils.core import map_list_among_us, getURLsInString, getMentionInString, cleanCodeStringWithMentionAndURLs, cleanUser, userOrNick +from utils.core import mySendHidden, mentionToUser, getChangelogs, isSlash from utils.time import stringTempsVersSecondes, nowUTC, intToDatetime, timedeltaToString, timestampScreen, getAge, ageLayout, nowCustom def setup(client): @@ -23,7 +24,7 @@ class Utils(commands.Cog): arg, fromSlash, _ = isSlash(arg) if arg == 'help': - return await ctx.send(embed = discord.Embed(color = discord.Colour.random(), description = + return await mySendHidden(ctx, fromSlash, embed = discord.Embed(color = discord.Colour.random(), description = ":hourglass: correspond au temps entre deux battements de cœurs\n\n \ :heartbeat: correspond au temps que met le client a réagir au messages (0 est normal lors de l'utilisation d'une commande slash)\n\n \ :stopwatch: correspond au temps que met le client a calculer le ping" @@ -96,9 +97,9 @@ class Utils(commands.Cog): else: answer = str(eval(equation)) except ZeroDivisionError: - return await ctx.send("Tu ne peux pas divisé par 0.") + return await mySendHidden(ctx, fromSlash, "Tu ne peux pas diviser par 0.") except TypeError: - return await ctx.send("Requête de calcul invalide.") + return await mySendHidden(ctx, fromSlash, "Requête de calcul invalide.") if '.' in answer: aftercomma = answer.split(".")[1] if len(aftercomma) > 2: @@ -171,7 +172,7 @@ class Utils(commands.Cog): await ctx.message.add_reaction(emoji = '✅') except: pass - await ctx.send(syntaxe) + await mySendHidden(ctx, fromSlash, syntaxe) @cog_ext.cog_slash(name="syntax", description = "Informations pour bien éditer son texte.") async def __syntax(self, ctx): return await self._syntax(ctx, True) @@ -188,11 +189,11 @@ class Utils(commands.Cog): if len(text) <= 5: if fromSlash != True: await ctx.message.add_reaction(emoji = '❌') - return await ctx.send("Ta note doit au moins faire 5 caractères.") + return await mySendHidden(ctx, fromSlash, "Ta note doit au moins faire 5 caractères.") elif len(text) >= 2048: if fromSlash != True: await ctx.message.add_reaction(emoji = '❌') - return await ctx.send("Ta note doit faire moins de 2048 caractères.") + return await ctx.send(ctx, fromSlash, message = "Ta note doit faire moins de 2048 caractères.") else: if fromSlash != True: await ctx.message.delete() @@ -200,7 +201,8 @@ class Utils(commands.Cog): embed.set_author(name = f"Mémo noté depuis {ctx.guild.name}", icon_url = ctx.author.avatar_url) embed.set_footer(text = f'📝 le {timestampScreen(intToDatetime(nowUTC()))}') await ctx.author.send(embed = embed) - return await ctx.send("Tu viens de recevoir ton mémo !", delete_after = 5) + + return await mySendHidden(ctx, fromSlash, "Tu viens de recevoir ton mémo !", delete_after = 5) @_memo.error async def _memo_error(self, ctx, error): if str(error) == "text is a required argument that is missing.": @@ -297,7 +299,7 @@ class Utils(commands.Cog): await ctx.message.add_reaction(emoji = '✅') await ctx.send(embed = embed) else: - await ctx.send(f"`{ctx.prefix}amongus `") + await mySendHidden(ctx, fromSlash, f"`{ctx.prefix}amongus `") @commands.command(name='among', hidden = True) async def _among(self, ctx, *, args = ""): """Raccourci à la commande amongus⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢""" @@ -475,7 +477,7 @@ class Utils(commands.Cog): if type(seconds) != int: if fromSlash != True: await ctx.message.add_reaction(emoji = '❓') - return await ctx.send(seconds) + return await mySendHidden(ctx, fromSlash, seconds) if seconds == 0: 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). \ @@ -490,8 +492,8 @@ class Utils(commands.Cog): if fromSlash != True: messageID = ctx.message.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 {destination} dans {timedeltaToString(seconds)} avec 1m de retard maximum.") - await ctx.send(embed = embed) + return await mySendHidden(ctx, fromSlash, f"Ok, je t'en parles {destination} dans {timedeltaToString(seconds)} avec 1m de retard maximum.") + await mySendHidden(ctx, fromSlash, embed = embed) @_reminder.error async def _reminder_error(self, ctx, error): if 'time is a required argument that is missing.' in str(error): @@ -567,7 +569,7 @@ class Utils(commands.Cog): try: utilisateur = mentionToUser(getMentionInString(utilisateur[0])[0]) except: - return await ctx.send("L'utilisateur renseigné n'a pas été trouvé.") + return await mySendHidden(ctx, fromSlash, "L'utilisateur renseigné n'a pas été trouvé.") else: utilisateur = ctx.author.id @@ -606,7 +608,7 @@ class Utils(commands.Cog): try: id = int(id[0]) except: - return await ctx.send("L'ID renseigné n'est pas valide.") + return await mySendHidden(ctx, fromSlash, "L'ID renseigné n'est pas valide.") else: return await ctx.send("Veuillez renseigner un ID.") @@ -619,7 +621,7 @@ class Utils(commands.Cog): else: if fromSlash != True: await ctx.message.add_reaction(emoji = '❌') - return await ctx.send("Rappel non trouvé, pas sur le bon serveur ou qui ne vous appartiens pas.") + return await mySendHidden(ctx, fromSlash, "Rappel non trouvé, pas sur le bon serveur ou qui ne vous appartiens pas.") @cog_ext.cog_slash(name="reminderdelete", description = "Suppprime un rappel.") async def __reminderdelete(self, ctx, id): return await self._reminderdelete(ctx, id, True) @@ -638,7 +640,7 @@ class Utils(commands.Cog): message = "Veuillez renseigner un numéro de version valide et existant." else: message = "Trop de requêtes sur l'API de Github, réessayez plus tard." - return await ctx.send(message) + return await mySendHidden(ctx, fromSlash, message) if fromSlash != True: await ctx.message.add_reaction(emoji = '✅') if len(changes[2]) > 2048: diff --git a/src/utils/core.py b/src/utils/core.py index fd3545d..eb1af2c 100644 --- a/src/utils/core.py +++ b/src/utils/core.py @@ -140,3 +140,15 @@ def isSlash(arg): arg = arg[0] return (arg, fromSlash, fullarg) + +async def mySendHidden( + ctx, fromSlash, message = None, tts = False, embed = None, file = None, files = None, + delete_after = None, allowed_mentions = None): + if fromSlash == True: # can't delete hidden message + await ctx.send( # sending hidden message + content = message, tts = tts, embed = embed, file = file, files = files, + delete_after = None, allowed_mentions = allowed_mentions, hidden = fromSlash) + else: + await ctx.send( # sending normal message + content = message, tts = tts, embed = embed, file = file, files = files, + delete_after = delete_after, allowed_mentions = allowed_mentions)