diff --git a/cogs/commands.py b/cogs/commands.py index 31ec6fe..c21e46e 100755 --- a/cogs/commands.py +++ b/cogs/commands.py @@ -1,9 +1,10 @@ import discord from discord.ext import commands -from random import randint, choice +from random import randint, choice, shuffle import time from datetime import datetime from pytz import timezone +import re def setup(bot): bot.add_cog(Commands(bot)) @@ -246,4 +247,54 @@ class Commands(commands.Cog): if isinstance(error, commands.CheckFailure): await ctx.send("Tu n'as pas la permission de faire cette commande, demande à un professeur.") else: - await ctx.send("Une erreur est survenue, syntaxe: `.appel [ID salon vocal]`.") \ No newline at end of file + await ctx.send("Une erreur est survenue, syntaxe: `.appel [ID salon vocal]`.") + + @commands.command(name='sondage') + async def _sondage(self, ctx, *args): + """Fais un sondage.⁢⁢⁢⁢⁢\n ➡ Syntaxe: .sondage "" "" "" "" """ + args = list(args) + if len(args) > 2: + question = args[0].replace("<@!", "").replace(">", "").replace("<@", "") + for i in re.findall(r'\d+', question): + ii = self.user_or_nick(ctx.author.guild.get_member(int(i))) + try: + question = question.replace(i, ii) + except: + pass + propositions = args[1:] + if len(propositions) <= 20: + message = "" + emojis = {} + emojis[0] = ['1️⃣', '2️⃣', '3️⃣', '4️⃣', '5️⃣', '6️⃣', '7️⃣', '8️⃣', '9️⃣', '🔟'] + emojis[1] = [ + '🟤', '🔴', '🟠', '🟡', '🟢', '🔵', '🟣', '🔘', '❤', '💜', + '🟫', '🟥', '🟧', '🟨', '🟩', '🟦', '🟪', '🔳', '🧡', '💙' + ] + mixable = True + if len(propositions) <= 10: + emojis_chosen = emojis[randint(0, len(emojis) - 1)] + emojis_chosen = emojis_chosen[:10] + if len(propositions) <= 8: + emojis_chosen = emojis_chosen[:8] + else: + emojis_chosen = emojis[randint(1, len(emojis) - 1)] + if emojis[0][0] in emojis_chosen: # rajouter ici les listes qui ne doivent pas être mélanger + mixable = False + if mixable: + shuffle(emojis_chosen) + for i in range(len(args[1:])): + message += f"{emojis_chosen[i]} -> {propositions[i]}\n" + embed = discord.Embed(title = question, description = message,color = randint(0, 0xFFFFFF)).set_footer(text = self.user_or_nick(ctx.author), icon_url = ctx.author.avatar_url) + sondage = await ctx.send(embed = embed) + for i in range(len(args[1:])): + await sondage.add_reaction(emoji = emojis_chosen[i]) + return await ctx.message.add_reaction(emoji = '✅') + else: + return await ctx.send(f"Désolé, mais tu as mis trop de possibilités (maximum : 20)") + else: + return await ctx.send(f'Désolé, mais il manque des arguments : `.sondage "" "" "" ""`') + def user_or_nick(self, user): + if user.nick: + return f"{user.nick} ({user.name}#{user.discriminator})" + else: + return f"{user.name}#{user.discriminator}" \ No newline at end of file