Не удается прочитать свойство ‘send’ неопределенного (Discord.js )

#javascript #discord.js

#javascript #discord.js

Вопрос:

Извините, что беспокою вас, ребята. Я написал код, но я думаю, что у этого кода есть проблемы, потому что я новичок в js и discord.js . Ценю любую помощь (также я просмотрел некоторые другие вопросы, но я не смог найти пример, подобный моему)

 const Discord = require('discord.js');
module.exports = {
    name: "ping",
    description: "Returns latency and API ping",
    execute: 
    async (client, message, args) => 
    {
        try
        {
        const msg = await message.channel.send(`🏓 Pinging....`);

        msg.edit(`🏓 Pong!
        latency ${Math.floor(msg.createdTimestap - message.createdTimestap)}ms
        API latency ${Math.round(client.ping)}ms`);
        }catch(e){console.log(e)}```

    }
}
 

Вот консоль:

     at Object.execute (C:UsersberkeDesktopRedBotcommandsping.js:10:43)
    at Client.<anonymous> (C:UsersberkeDesktopRedBotbot.js:77:35)
    at Client.emit (events.js:327:22)
    at MessageCreateAction.handle (C:UsersberkeDesktopRedBotnode_modulesdiscord.jssrcclientactionsMessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:UsersberkeDesktopRedBotnode_modulesdiscord.jssrcclientwebsockethandlersMESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:UsersberkeDesktopRedBotnode_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:384:31)
    at WebSocketShard.onPacket (C:UsersberkeDesktopRedBotnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:444:22)
    at WebSocketShard.onMessage (C:UsersberkeDesktopRedBotnode_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:301:10)
    at WebSocket.onMessage (C:UsersberkeDesktopRedBotnode_moduleswslibevent-target.js:132:16)
    at WebSocket.emit (events.js:315:20)
 

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

1. Ошибка точно указывает, в чем проблема. По некоторым причинам message.channel имеет значение null.

2. Как указано в ошибке: channel свойство undefined по какой-либо причине. Если вы не хотите, чтобы ваше приложение ломалось, вы можете проверить, определено ли свойство channel объекта, а затем использовать его ключи следующим образом: const msg = await (message.channel amp;amp; message.channel.send('🏓 Pinging....'));

3. Правильно ли вы передаете message параметр?

Ответ №1:

Как отметили комментаторы, в сообщении, которое вы получаете в функции, нет свойства канала.

Вы можете отладить свое приложение и посмотреть, какое значение имеют параметры во время выполнения, или вы можете console.log() их и просто протестировать, чтобы лучше понять, что происходит.

Если вы следуете инструкциям по Discord.js ‘документация, возможно, вы захотите ознакомиться с этим репозиторием, в котором показан рабочий пример динамически выполняемых команд.

Для целей stackoverflow я вставлю соответствующий код из этого репозитория ниже:

index.js

 const fs = require('fs');
const Discord = require('discord.js');
const { prefix, token } = require('./config.json');

const client = new Discord.Client();
client.commands = new Discord.Collection();

const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));

for (const file of commandFiles) {
    const command = require(`./commands/${file}`);
    client.commands.set(command.name, command);
}

client.once('ready', () => {
    console.log('Ready!');
});

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(message, args);
    } catch (error) {
        console.error(error);
        message.reply('there was an error trying to execute that command!');
    }
});
 

commands/ping.js

 module.exports = {
    name: 'ping',
    description: 'Ping!',
    execute(message) {
        message.channel.send('Pong.');
    }
 

config.json

 {
    "prefix": "!",
    "token": "your-token-goes-here"
}