Discord.js команда «Камень, ножницы, бумага» ничего не делает, даже несмотря на отсутствие видимых ошибок

#javascript #discord #discord.js

#javascript #Discord #discord.js

Вопрос:

Я новичок в программировании, так что имейте это в виду, ха-ха. Итак, по сути, я пытаюсь создать команду rock / paper / scissors для бота Discord в discord.js . Однако ошибок нет, когда я отправляю команду в Discord, ничего не происходит. Я успешно выполнил другие команды, используя тот же бот и обработчик команд, поэтому я не знаю, в чем проблема. Вот мой обработчик команд:

 client.on('message', message =>{
    if(!message.content.startsWith(prefix) || message.author.bot)return;

    const args = message.content.slice(prefix.length).split(/  /);
    const command = args.shift().toLowerCase();

 if(command === 'rps'){
        client.commands.get('rps').execute(message, args, Discord);
    }
 

Так что да. Вот код для моей команды rps:

 const discord = require('discord.js')
module.exports = {
    name: "rps",
    description: "play a game of rock, paper and scissors",
    run: async(client, message, args) => {
        let embed = new discord.MessageEmbed()
        .setTitle("RPS")
        .setDescription("React with your choice")
        .setTimestamp()
        let msg = await message.channel.send(embed)
        await msg.react("🗻")
        await msg.react("✂")
        await msg.react("📰")

        const filter = (reaction, user) => {
            return ['🗻', '✂', '📰'].includes(reaction.emoji.name) amp;amp; user.id === message.author.id;
        }

        const choices = ['🗻', '✂', '📰']
        const me = choices[Math.floor(Math.random() * choices.length)]
        msg.awaitReactions(filter, {max:1, time: 60000, error: ["time"]}).then(
            async(collected) => {
                const reaction = collected.first()
                let result = new discord.MessageEmbed()
                .setTitle("RESULT")
                .addField("Your choice", `${reaction.emoji.name}`)
                .addField("My choice", `${me}`)
            await msg.edit(result)
                if ((me === "🗻" amp;amp; reaction.emoji.name === "✂") ||
                (me === "📰" amp;amp; reaction.emoji.name === "🗻") ||
                (me === "✂" amp;amp; reaction.emoji.name === "📰")) {
                    message.reply("You lost!");
            } else if (me === reaction.emoji.name) {
                return message.reply("It's a tie!");
            } else {
                return message.reply("You won!");
            }
        })
        .catch(collected => {
                message.reply('You ran out of time- cancelling game.');
            })
}
}
 

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

Редактировать: я не включил это в код, потому что я тупой, но я указал префикс, так что это не проблема.

Комментарии:

1. Вам нужно исправить свой код в строке with execute . Когда вы передаете переменные в основном, вы должны передавать их в том же порядке и в команде! Затем вам нужно добавить Discord в переменные и исправить discord.MessageEmbed() Discord.MessageEmbed()

Ответ №1:

 .execute(message, args, Discord);
 

это переменные, которые вы использовали при вызове функции в вашем основном файле.
Но в команде, которую вы используете

 (client, message, args)
 

это может быть причиной, по которой он не работает