Не удается изменить название канала discord

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

Вопрос:

Мне нужно будет изменить название некоторых голосовых каналов. Я попробовал несколько примеров, но ни один из них не сработал для меня.

 let guild = client.guilds.cache.get('Server ID');
let channel = guild.channels.get('Channel ID');
channel.setName('MY NAME WAS CHANGED!')
 

Ошибка:

Ошибка типа необработанного отклонения: guild.channels.get не является функцией

Еще один пример, который не работает

 client.guilds.cache.get('Server ID').channels.get('Channel ID').channels.setName("MY NAME WAS CHANGED!");
 

Ошибка:

Ошибка типа необработанного отклонения: клиент.гильдии.кэш.get(…).каналы.get не является функцией

Как я могу правильно изменить название канала?

Обновлено: Я могу получить текущее название своего канала, но как я могу изменить его название?

   client.channels.fetch("MYID")
  .then(channel => console.log(`The channel name is: ${channel.name}`))
  .catch(console.error);
 

Название канала: измените мое имя

   let channel = client.channels.fetch("ID")
  channel.setName("MY NAME WAS CHANGED!")
  .then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))
  .catch(console.error);
 

Ошибка типа необработанного отклонения: channel.setName не является функцией

Даже после извлечения канала имя не может быть изменено кодом, который я нашел в документах.

Ответ №1:

Попробуйте использовать guild.каналы.fetch() вместо guild.channels.get(). https://discord.js.org/#/docs/main/stable/class/GuildChannelManager?scrollTo=fetch Примечание — Когда он возвращает обещание, убедитесь, что либо await он, либо используется .then() .

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

1. Похоже, это проблема с именем, что бы я ни делал, я не могу изменить название канала…

2. Каков вывод вашего кода, когда вы переходите на . принести()? Кроме того, который discord.js версию вы используете?

3. Unhandled rejection TypeError: channel.setName is not a function Когда я использовал fetch вместо get из первого примера. Всегда проблема с функцией… я не могу понять, что не так…

4. discord.js должна быть последняя версия.. я начал примерно неделю назад с API discord

5. Поскольку функция fetch() возвращает обещание, вам нужно было либо использовать .then (), либо дождаться его.

Ответ №2:

   client.channels.fetch("ID")
  .then(channel => channel.setName("NewChannelName"));
  client.channels.fetch("ID2")
  .then(channel => channel.setName("NewChannelName2"));
 

Вот решение. guild.channels.get кажется, устарел, вот почему у меня, наверное, ничего не получилось.

С client.channels.fetch("ID") помощью вы можете выбрать идентификатор и сразу после этого вы можете изменить название своего канала. .then(channel => channel.setName("YourNewChannelName"));

Ответ №3:

Этот get метод необходимо использовать на объекте cache недвижимости.

 let channel = guild.channels.cache.get('Channel ID')
 

Однако это происходит только из кэша, что означает, что там могут быть не все каналы. Использование fetch извлекает канал из API, что означает, что он не обязательно должен находиться в кэше. Будьте осторожны, этот метод возвращает Promise то, что вам придется await (убедитесь, что это асинхронный обратный вызов!)

 let channel = await guild.channels.fetch('Channel ID')
 

Затем, чтобы задать имя, напишите это в объявлении

 channel.setName("name-of-channel")