Discord.js не удалось отправить сообщение, дискорд что-то изменил?

#node.js #discord #discord.js #bots #message

Вопрос:

Этот код работал в прошлом, однако я обнаружил, что channel.send он больше не работает, есть идеи, почему или как я должен отправлять сообщения?

 client.on('ready', () =gt; {  client.user.setActivity("I'm online!", { type: 'PLAYING' });  client.guilds.cache.forEach(guild =gt; {  let channel = guild.channels.cache.get('CHANNELID')  channel.send(`**Hello!**`);  console.log('Bot is online!')  }) });  

Ошибка: TypeError: Cannot read property 'send' of undefined

Я понятия не имею, почему это больше не работает…

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

1. Вы ездите на велосипеде по всем гильдиям…?

2. Как я должен это сделать?

3. Нет, вы делаете это, но вы не должны… выбирать гильдию let guild = client.guilds.cache.get("id") и выбирать канал с guild.channels.cache.get("id")

4. Я нашел способ заставить это работать.. в любом случае спасибо! 🙂

Ответ №1:

Это работает… не уверен, почему и хотел бы получить объяснение, почему предыдущий код печатал неопределенную ошибку, однако я не знаю.

Решение: client.channels.cache.get('ChannelID').send('Hello!');

 client.on('ready', () =gt; {  client.user.setActivity("I'm online", { type: 'PLAYING' });  client.channels.cache.get('ChannelID').send(`**Hello!**`);  console.log('Bot is online!') });  

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

1. Вы получили undefined ошибку, потому что просматривали все гильдии, пытаясь получить доступ к определенному каналу. Если канал не найден, он выбросит undefined или null , что означает, что канал не найден. Вот почему ваш второй код работает, а первый выдает ошибки ввода. Почему это работало раньше, я понятия не имею, этого не должно было быть, по крайней мере, я так думаю.