#discord.js
Вопрос:
Это мой первый раз, когда я использую обработчик команд, и у меня возникли некоторые проблемы с добавлением команды, она не завершена на 100%, поэтому, если код не имеет смысла, вот почему. Когда я запускаю команду, я получаю ошибку, указанную ниже, я понятия не имею, что вызывает это, и я действительно не разбираюсь в таких вещах, любая информация/советы помогут.
ошибка:
TypeError: message.reply is not a function
at Object.execute (C:UserslachiDocumentssrcStaniel Nativecommandsrps.js:15:21)
at Client.<anonymous> (C:UserslachiDocumentssrcStaniel Nativeindex.js:47:32)
at Client.emit (events.js:315:20)
at MessageCreateAction.handle (C:UserslachiDocumentssrcStaniel Nativenode_modulesdiscord.jssrcclientactionsMessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (C:UserslachiDocumentssrcStaniel Nativenode_modulesdiscord.jssrcclientwebsockethandlersMESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (C:UserslachiDocumentssrcStaniel Nativenode_modulesdiscord.j at WebSocketShard.onPacket (C:UserslachiDocumentssrcStaniel Nativenode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:444:22)
at WebSocketShard.onMessage (C:UserslachiDocumentssrcStaniel Nativenode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:301:10)
at WebSocket.onMessage (C:UserslachiDocumentssrcStaniel Nativenode_moduleswslibevent-target.js:132:16)
index.js:
//Requirements//
const fs = require('fs');
const Discord = require('discord.js');
const client = new Discord.Client();
client.commands = new Discord.Collection();
const Command_Files = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
require('dotenv').config()
//Bot Settings//
const Prefix = 's!';
const Bot_Name = 'Staniel';
const Bot_Activity = 'over the server!';
const Bot_Activity_Type = {type: 'WATCHING'}; //PLAYING|STREAMING|LISTENING|WATCHING|CUSTOM_STATUS|COMPETING//
//API Keys ETC//
const Discord_Token = process.env.DISCORD_TOKEN;
const YouTube_API = process.env.YOUTUBE_API;
const Twitch_API = process.env.TWITCH_API;
//Server IDs//
const Server_ID = client.guilds.cache.get('854000618367746049');
const Member_Count_Channel = '854375625552560168';
const YouTube_Sub_Count_Channel = '854424982460694529';
const Twitch_Follower_Count_Channel = null;
//On Start//
client.on('ready', () => {
console.log(`${Bot_Name} is now online!`);
});
//Command Handler//
for (const file of Command_Files) {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
};
client.on('message', message => {
if (!message.content.startsWith(Prefix) || message.author.bot) return;
const args = message.content.slice(Prefix.length).trim().split(/ /);
const command = args.shift().toLowerCase();
if (!client.commands.has(command)) return;
try {
client.commands.get(command).execute(Prefix, client, message, args);
} catch (error) {
console.error(error);
message.reply('Error executing that command!');
}
});
//Run Bot//
client.login(Discord_Token)
rps.js:
module.exports = {
name: 'rps',
description: 'A simple RPS Minigame!',
execute(Prefix, message, args) {
//Customize Bot//
No_Choice_Reply = `Correct Usage: ${Prefix}rps [rock|paper|scissors]`;
Game_Tie_Reply = "";
//DONT TOUCH//
const Accepted_Replies = ['rock', 'paper', 'scissors'];
const Bot_Algorithm = Math.floor((Math.random() * Accepted_Replies.length));
const Bot_Choice = Accepted_Replies[Bot_Algorithm];
const User_Choice = args[0];
if(!User_Choice) message.reply("Test");
},
};
Спасибо, Лачи.
Ответ №1:
Проблема в том, как вы передаете свои команды, вы передаете «Префикс, клиент, сообщение, аргументы», но затем в команде «Префикс, сообщение, аргументы» это выглядит так, поэтому вы пытаетесь выполнить client.reply, который недействителен.
// Message Event
client.commands.get(command).execute(Prefix, client, message, args);
// Command
// What you have:
execute(Prefix, message, args) {
// What you need:
execute(Prefix, client, message, args) {