message.client.guilds.fetch() не является функцией

#javascript #node.js #discord #discord.js

#javascript #node.js #Discord #discord.js

Вопрос:

Вот соответствующий фрагмент кода, над которым я работал:

 message.client.guilds.fetch('ID Here', false).then(guild => message.channel.send(guild.name))
  

Согласно discord.js документам, эта функция GuildManager#fetch() теоретически должна работать. Тем не менее, я продолжаю получать эту ошибку:

 message.client.guilds.fetch is not a function
  

Я даже попытался напрямую скопировать и вставить пример из документации по функциям, но он все равно выдал мне ту же ошибку.

Пример документов

Я довольно озадачен, буду признателен за любую помощь!

Редактировать: я должен упомянуть, что все другие discord.js fetch методы работают нормально, такие как:

 message.channel.messages.fetch()
  

Редактировать # 2: моя предыдущая проблема была решена, я использовал неправильную версию discord.js . Однако теперь я получаю новую ошибку:

 DiscordAPIError: Missing Access
  

При ее запуске.

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

1. Пожалуйста, используйте client.guilds.cache.get("GuildID") вместо этого.

2. @Jakye Функциональность не эквивалентна. fetch с false в качестве второго аргумента должна быть получена гильдия из REST.

3. @Jakye я хотел бы использовать .fetch() , чтобы я мог запросить API Discord

4. @user4642212 (из discord.js документов): Все гильдии, которые в данный момент обрабатывает клиент, отображаются по их идентификаторам — пока не используется сегментирование, это будет каждая гильдия, членом которой является бот.

Ответ №1:

Скорее всего, вы используете устаревшую discord.js версию. client.guilds был создан GuildManager начиная с версии 12.0.0, а метод client.guilds.fetch был добавлен только в последней версии 12.3.0. Для использования этого метода у вас должна быть discord.js версия>= 12.3.0.

Попробуйте npm ls discord.js проверить активную версию в ваших зависимостях.
Попробуйте npm i discord.js@latest выполнить принудительное обновление до последней версии.

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

1. В настоящее время я использую последнюю discord.js версию

2. @Lioness100 Можете ли вы поделиться выводом message.client.guilds.constructor.name в приведенном выше контексте кода?

3. @Lioness100 Я отредактировал ответ с некоторыми дополнительными деталями, обнаружив, что fetch метод был фактически добавлен только в этой самой последней версии v12.3. Пожалуйста, убедитесь, что у вас действительно последняя версия, а не просто какая-то другая версия v12.

4. Это сделало бы это. Я преждевременно прокомментировал, что использовал последнюю версию перед проверкой, извините. Я использовал 12.2 версию. Теперь он возвращает DiscordAPIError: Missing Access ошибку, какие разрешения требуются?

5. @Lioness100 Missing Access — это не ошибка разрешения, это просто означает, что ресурс не виден вашему боту. Это означает, что вы не делитесь с ним ресурсом, т. Е. ваш бот не входит в гильдию, которую вы запрашиваете.