Discord.js : Не удается прочитать свойство «кэш» неопределенного

#javascript #node.js #discord.js

#javascript #node.js #discord.js

Вопрос:

В настоящее время я кодирую discord-бота с discord.js . Я пытаюсь получить определенный канал от определенной гильдии по идентификатору, чтобы затем записывать в него сообщения. Я нашел это решение на grepper, но при запуске я получаю сообщение об ошибке «Не удается прочитать свойство «кэш» неопределенного», но почему каналы не определены? The discord.js документация перечисляет канал как собственность гильдии: https://discord.js.org/#/docs/main/stable/class/Guild . Кто-нибудь знает, почему это происходит?

 client.guilds.fetch(guildID).channels.cache.get(channelID)
 

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

1. Какую версию Discord вы используете?

2. Discord.js версия 12.3.1

3. Когда выполняется этот фрагмент кода? (какое-либо событие или ?=)

4. Внутри client.on(«готово», () => { … }) событие

Ответ №1:

client.guilds.fetch(guildID) это обещание, что вам нужно, это:

client.guilds.fetch(guildID).then(guild => guild.channels.cache.get(channelID).send('HI!'))

если вы хотите быть на 100% безопасным

 client.guilds.fetch(guildID)
    .then(guild => 
        guild.channels.fetch(channelID)
            .then(channel => 
                 channel.send('HI!')
));
 

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

1. Каналы кэшируются вместе с гильдиями, поэтому выборка канала не требуется.

Ответ №2:

Самый простой и короткий способ сделать это

 const channel = client.channels.cache.get("CHANNEL-ID")
channel.send("Hello")