Не знаю, как сформулировать короткий вопрос, поэтому буду признателен за любую помощь

#node.js #discord.js

Вопрос:

Поэтому я сделал эту команду опроса, чтобы люди без администратора могли проводить опросы. Чтобы предотвратить спам, существует шаг проверки для всех, у кого нет администратора. Но когда вы реагируете на опрос, чтобы проверить его, это работает только для человека, проводящего опрос. И не администратор, который должен проверять, не спам ли это.

Поэтому, когда администратор реагирует, ничего не происходит, но когда человек, который провел опрос, реагирует на него, он проверяет опрос и отправляет его на основной канал.

Код внизу, кто-то может помочь! — Ценю это!

  const {Client, Collection, GuildMember, User, MessageEmbed, Message} = require("discord.js");
    const ms = require("ms");
    const delay = (msec) => new Promise((resolve) => setTimeout(resolve, msec));
    module.exports.run = async(client, message, args, user, reaction) => {
    
        var woord = '!poll' 
        var question = args.slice(0).join(' ') 
        var poll = new MessageEmbed()
            .setTitle(`${message.author.username} wil een poll maken.`)
            .setDescription(question)
            .setColor('#eb8dd8')
            .setFooter(`Poll gemaakt door: `  message.author.username)
    
        var success = new MessageEmbed()
            .setDescription(question)
            .setColor('#eb8dd8')
            .setFooter("Poll started door: "  message.author.username)
    
            
    
        if(message.content.includes(woord)) {
            message.delete({timeout:0}) 
        }
    
        if(!message.member.roles.cache.some(r => r.name === 'Barman')) {
            if(message.channel.name.includes("🙇-poll")) {
                if(args[0]) {
                    message.delete()
                    message.guild.channels.create(message.author.username, { permissionOverwrites:[
                        {
                            deny: 'VIEW_CHANNEL',
                            id: message.guild.id
                        },
                        {
                            allow: 'VIEW_CHANNEL',
                            id: message.author.id
                        },
                    ],
                }).then(channel => {
                    channel.send(poll).then(poll => {
                        poll.react('✅')
                        .then(() => poll.react('❌'));
                    })
                })
    
                } else {
                    message.delete()
                }
            }
        } else {
            var pollChannel = client.channels.cache.get('876531134702448701')
            pollChannel.send(success).then(success => {
                success.react('✅')
                .then(() => success.react('❌'))
            })
        }
        
    
        client.on('messageReactionAdd', (reaction, user) => {
            const deleteChannel = message.guild.channels.cache.find(channel => channel.name.toLowerCase() === user.username);
            var pollChannel = client.channels.cache.get('876531134702448701')
            if(reaction.emoji.name === '✅') {
                if(message.guild.channels.cache.find(channel => channel.name.toLowerCase() === user.username)) {
                    deleteChannel.delete()
                    .then(channel => {
                        pollChannel.send(success).then(success =>{
                            success.react('✅')
                            .then(() => success.react('❌'))
                        })
                    })
                    
    
                }
            } if(reaction.emoji.name === '❌') {
                if(message.guild.channels.cache.find(channel => channel.name.toLowerCase() === user.username)) {
                    deleteChannel.delete()
                }
            }
        })
    }
        
    
    
    module.exports.help = {
        name: "poll"
    }

 

Ответ №1:

В начале вашей функции вы можете сделать это:

 const questions = new Collection();
questions.set("What is the color of healthy grass?", "green");
questions.set("How many vowels are there in these letters: apple", "2");
const chosen = questions.randomKey()
await message.channel.send(`Please answer the question. This is to prevent spam. Make sure your spelling is correct. You have 30 seconds —> ${chosen}`)
try {
  await message.channel.awaitMessages((m) => m.author.id === message.author.id amp;amp; m.content.toLowerCase() === questions.get(chosen), {
    time: 30000, 
    max: 1
  })
} catch(err) { 
  return message.channel.send("You ran out of time to answer correctly!")
}
//code to make poll
 

Ваш awaitMessages синтаксис может отличаться на v13. Вы также можете заменить мои вопросы и добавить столько, сколько захотите!