From cd684f863f016314018bd45fbdfa108323d3cf85 Mon Sep 17 00:00:00 2001 From: Tutur33 Date: Fri, 16 Feb 2024 17:19:16 +0100 Subject: [PATCH] basic poll command --- commands/utils/poll.js | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 commands/utils/poll.js diff --git a/commands/utils/poll.js b/commands/utils/poll.js new file mode 100644 index 0000000..ec302d6 --- /dev/null +++ b/commands/utils/poll.js @@ -0,0 +1,50 @@ +const { EmbedBuilder, StringSelectMenuBuilder, ActionRowBuilder } = require('discord.js'); + +module.exports = { + name: 'poll', + description: 'CrĂ©e un sondage', + emote: '📊', + utilisation: 'poll ...', + category: 'utils', + async execute(message, args, client) { + message.reply('Veuillez entrer la question du sondage'); + const filter = m => m.author.id === message.author.id; + const collector = message.channel.createMessageCollector({ filter, max: 1, time: 60000 }); + collector.on('collect', async (m) => { + const question = m.content; + + const pollEmbed = new EmbedBuilder() + .setTitle(question) + + message.reply('Combien de rĂ©ponses voulez-vous ajouter ?'); + const collector2 = message.channel.createMessageCollector({ filter, max: 1, time: 60000 }); + collector2.on('collect', async (m) => { + const responseCount = parseInt(m.content); + if (isNaN(responseCount)) return message.reply('Veuillez entrer un nombre valide.'); + if (responseCount < 2) return message.reply('Veuillez entrer un nombre supĂ©rieur Ă  1.'); + if (responseCount > 10) return message.reply('Veuillez entrer un nombre infĂ©rieur Ă  10.'); + + let repsonce; + for (let i = 0; i < responseCount; i++) { + message.reply(`Veuillez entrer la rĂ©ponse ${i + 1}`); + const collector3 = message.channel.createMessageCollector({ filter, max: 1, time: 60000 }); + collector3.on('collect', async (m) => { + repsonce = repsonce ? `${repsonce}\n${i + 1}\u20e3 : ${m.content}` : `${i + 1}\u20e3 : ${m.content}`; + + if (i === responseCount - 1) { + pollEmbed.setDescription(repsonce); + const Embed = await message.channel.send({ embeds: [pollEmbed] }); + for (let i = 0; i < responseCount; i++) { + await Embed.react(`${i + 1}\u20e3`); + } + } + }); + + await new Promise(resolve => { + collector3.on('end', () => resolve()); + }); + } + }); + }) + }, +} \ No newline at end of file