不和谐.js - 类型错误:无法读取未定义的属性(读取"命令")



我正在编写一个JavaScript中的Discord Bot,但是当我启动Bot时,我有这个错误!我没有找到,因为我检查了application.commands。盒子!下面是完整的错误信息:

我不知道如何解决这个问题。

我试着邀请我的机器人另一次,但它不工作:(

出错人的错误信息:

node:events:491
throw er; // Unhandled 'error' event
^
TypeError: Cannot read properties of undefined (reading 'commands')
at Client.<anonymous> (/home/container/index.js:72:51)
at Client.emit (node:events:513:28)
at WebSocketManager.triggerClientReady (/home/container/node_modules/discord.js/src/client/websocket/WebSocketManager.js:385:17)
at WebSocketManager.checkShardsReady (/home/container/node_modules/discord.js/src/client/websocket/WebSocketManager.js:368:10)
at WebSocketShard.<anonymous> (/home/container/node_modules/discord.js/src/client/websocket/WebSocketManager.js:194:14)
at WebSocketShard.emit (node:events:513:28)
at WebSocketShard.checkReady (/home/container/node_modules/discord.js/src/client/websocket/WebSocketShard.js:511:12)
at WebSocketShard.onPacket (/home/container/node_modules/discord.js/src/client/websocket/WebSocketShard.js:483:16)
at WebSocketShard.onMessage (/home/container/node_modules/discord.js/src/client/websocket/WebSocketShard.js:320:10)
at WebSocket.onMessage (/home/container/node_modules/ws/lib/event-target.js:199:18)
Emitted 'error' event on Client instance at:
at emitUnhandledRejectionOrErr (node:events:394:10)
at process.processTicksAndRejections (node:internal/process/task_queues:84:21)
Node.js v18.12.0

默认代码:

const { Client, GatewayIntentBits, Message, version, MessageFlags } = require("discord.js");
const { SlashCommandBuilder} = require("@discordjs/builders");
const { EmbedBuilder } = require('discord.js');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages
]
})

//const { REST, Routes } = require('discord.js');
const {clientId, skorflexID, guildId, token, hostRole, multiplayerAnnouncementRole, fortniteLogo, rebootLogo,  basicFortniteImage, sept, un, quatre, trois, modoID } = require('./config.json');

const announce = new SlashCommandBuilder()
.setName("announce")
.setDescription("This command will send a embed message to announce your hosting !")
.addStringOption(option => option
.setName("version")
.setDescription("Put the version of Fortnite you want to host")
.setRequired(true))
.addStringOption(option => option
.setName("radmin_ip")
.setDescription("Put your Radmin IP here (without the 'open')")
.setRequired(true));

const clear = new SlashCommandBuilder()
.setName("clear")
.setDescription("This command will delete a number of messages in one second !")

.addIntegerOption(option => option
.setName("number")
.setDescription("Put the number of messages who will be deleted !")
.setRequired(true))

const say = new SlashCommandBuilder()
.setName("say")
.setDescription("The bot will say your message")
.addStringOption(option => option
.setName("message")
.setDescription("Type your message !")
.setRequired(true))

const thumbnail = new SlashCommandBuilder()
.setName("thumbnail")
.setDescription("The bot send you the thumbnail of a YouTube video")
.addStringOption(option => option
.setName("id")
.setDescription("You can find the ID in the link after the << watch?v= >>")
.setRequired(true))


client.on("ready", async () => {
client.guilds.cache.get("1027595307187441664").commands.create(thumbnail);
client.guilds.cache.get(guildId).commands.fetch();
client.guilds.cache.get(guildId).commands.cache.map(command => {
command.delete();
});
console.log("Le bot est lancé et prêt à l'utilisation !");
});

client.on("interactionCreate", interaction => {

if(interaction.isCommand()){
// announce ou announcement
if(interaction.commandName === "announce" || interaction.commandName === "announcement"){
let version1 = interaction.options.getString("version")
let radmin_ip1 = interaction.options.getString("radmin_ip")
let image = basicFortniteImage;
if( version1 != undefined && radmin_ip1 != undefined ){
if(version1 ==="7.30" || version1 ==="7.3" || version1 ==="7.2"|| version1 ==="7.1"|| version1 ==="7"){
image = sept;
}else if(version1 == "1.7.2"){
image = un;
}else if(version1 =="3.5"){
image = trois;
}else if(version1 =="4.5"){
image = quatre;
}
const exampleEmbed = new EmbedBuilder()
.setColor(0xFFA3F8)
.setTitle("**Multiplayer Announcement**")
.setDescription("<@"+interaction.user.id+"> is hosting rn in **"+ version1 + "**nn - To join, write this in the fortnite console : nn> `open "+ radmin_ip1 +"`nn To open the fortnite console you need to press the ² button or if it's doesn't work press ` ")
.setImage(image)
.setFooter({ text: 'Hosted with Reboot Launcher', iconURL: rebootLogo})
.setThumbnail(fortniteLogo)
.setTimestamp()
.setFields({name: "To join", value: 'you need to be connected on **RADMIN VPN**'})

if(interaction.member.roles.cache.some(e => e.id == hostRole)){
interaction.channel.send("<@&"+multiplayerAnnouncementRole+">")
interaction.reply({embeds: [exampleEmbed]});
}else{
interaction.reply({ content: "You don't have the Host role !", ephemeral: true });
}
}
}
if(interaction.commandName === "clear"){
var number = interaction.options.getInteger("number")
if(interaction.member.roles.cache.some(e => e.id == modoID)){
if(number >= 1 && number <= 100){
interaction.channel.bulkDelete(number);
interaction.reply({content: number + " messages has been deleted correctly !", ephemeral: true});
}else{
interaction.reply({content: "To use the clear command, your number will be over 1 and under 100 ! Please retry", ephemeral: true});
}
}
}

if(interaction.commandName === "say"){
let message2 = interaction.options.getString("message");


if(interaction.member.roles.cache.some(e => e.id == modoID)){
interaction.reply({content: "."})
interaction.deleteReply();
interaction.channel.send({content: message2})
}else if(interaction.member.roles.cache.some(i => i.id != modoID)){
interaction.reply({content: "You are not a moderator !", ephemeral: true})
}

}
if(interaction.commandName === "thumbnail"){
var ytID = interaction.options.getString("id");

interaction.reply({content: "."})
interaction.deleteReply();
interaction.channel.send({content: "https://img.youtube.com/vi/"+ ytID +"/maxresdefault.jpg"})
}
}
})

client.login(token);

它指的是这一行:

client.guilds.cache.get("1027595307187441664").commands.create(thumbnail);

基本上client.guilds.cache.get("1027595307187441664")是未定义的,没有返回结果。

最新更新