#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)
это может быть причиной, по которой он не работает