我目前是Discord.JS的新手,我想知道如何才能通过机器人获得这个"ECHO"命令的选项来回复
我当前的所有代码:
package.json个
{
"name": "bot",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
index.js个
const fs = require('node:fs');
const path = require('node:path');
const {Client,GatewayIntentBits, Collection} = require('discord.js');
const {token} = require('./config.json');
const { execute } = require('./commands/ping');
const ping = require('./commands/ping');
const client = new Client({intents: [GatewayIntentBits.Guilds]});
client.commands = new Collection();
const commandPath = path.join(__dirname, 'commands');
const commandFiles = fs.readdirSync(commandPath).filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const filePath = path.join(commandPath, file);
const command = require(filePath);
client.commands.set(command.data.name, command);
}
client.once('ready',()=> {
console.log("ready");
});
client.on('interactionCreate', async interaction => {
if(!interaction.isChatInputCommand()) return;
const command = client.commands.get(interaction.commandName)
if(!command) return;
try {
await command.execute(interaction);
} catch(error) {
console.error(error);
await interaction.reply({content: "there was an error while executing this command", ephemeral: true});
}
});
client.login(token);
echo.js个
const {SlashCommandBuilder} = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('echo')
.setDescription('returns input')
.addStringOption(option =>
option.setName('input')
.setDescription("the option to echo back")
.setRequired(true)),
async execute(interaction) {
await interaction.reply();
}
}
ping.js个
const {SlashCommandBuilder} = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('ping')
.setDescription('replies with pong'),
async execute(interaction) {
await interaction.reply("pong!")
}
}
deploy-commands.js个
const {REST} = require("@discordjs/rest");
const {Routes} = require("discord.js");
const {clientId, guildId, token} = require("./config.json");
const path = require("node:path");
const fs = require("node:fs");
const commands = [];
const commandPath = path.join(__dirname, 'commands');
const commandFiles = fs.readdirSync(commandPath).filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const filePath = path.join(commandPath, file);
const command = require(filePath);
commands.push(command.data.toJSON());
}
const rest = new REST({version: 10}).setToken(token);
rest.put(Routes.applicationGuildCommands(clientId, guildId), {body:commands})
.then(() => console.log("registered commands"))
.catch(console.error);
config.json个
{
"token": "hidden",
"clientId": "1009394510117212162",
"guildId": "1009401102929768479"
}
error log个
C:\Users\Perry\Desktop\bot>; node .就绪类型错误:无法读取 未定义的属性(读数为‘临时性’) 在ChatInputCommandInteraction.Reply(C:\Users\perry\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:102:30) 在对象.执行(C:\Users\perry\Desktop\bot\commands\echo.js:14:27) 在客户处.(C:\Users\Perry\Desktop\bot\index.js:32:23) 在Client.emit( node :事件:527:28) 在InteractionCreateAction.Handle(C:\Users\perry\node_modules\discord.js\src\client\actions\InteractionCreate.js:81:12) 在对象模块.exports[as Interaction_Create](C:\Users\perry\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36) 在WebSocketManager.handlePacket(C:\Users\perry\node_modules\discord.js\src\client\websocket\WebSocketManager.js:352:31) 在WebSocketShard.onPacket(C:\Users\perry\node_modules\discord.js\src\client\websocket\WebSocketShard.js:481:22) OnMessage(C:\Users\perry\node_modules\discord.js\src\client\websocket\WebSocketShard.js:321:10) OnMessage(C:\Users\perry\node_modules\ws\lib\event-target.js:199:18)