#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")