Как найти канал по его названию в Discord. js? - PullRequest
0 голосов
/ 03 августа 2020

Я попытался использовать это, чтобы найти канал с именем «информация» и отправить в нем сообщение:

let channel = message.guild.channels.cache.find(channel => channel.name.toLowerCase() === 'information')
channel.send('test')

И использование этого кода привело к этой ошибке:

let channel = message.guild.channels.cache.find(channel => channel.name.toLowerCase() === 'information')
                                               ^

TypeError: message.guild.channels.cache.find is not a function

Я попытался npm install discord.js обновить пакет, но это все равно не помогло. Я тоже пробовал client.channels.cache.find, но в итоге получилась та же ошибка. Я что-то здесь не так делаю?

1 Ответ

1 голос
/ 03 августа 2020

Согласно документам, вы делаете это правильно ... но согласно reddit, нет необходимости вызывать кеш, и вы можете просто позвонить:

let channel = message.guild.channels.find(
  channel => channel.name.toLowerCase() === "information"
)

это соответствует тому, что я делаю с моим ботом, и это проработало несколько месяцев go

guild.channels.array().filter(c => c.name === 'General')

Похоже, guild.channels уже является коллекцией, не знаю, ошибка ли это в документации или это действительно недавняя версия, которая изменила это ...

[edit] обнаружил проблему

в документации, есть две версии (вверху на панели инструментов) v12 (по умолчанию) и v11

кажется, что они добавили .cache в v12, но, возможно, этого уже нет в npm.

у них есть предупреждение о взломе изменения, которые ссылаются на эту страницу, где объясняется, как перейти на v12 https://discordjs.guide/additional-info/changes-in-v12.html

...