Пропадают данные в noode.js. В консоль выводятся, а отправиться не могут

'use strict';
// Инициализация
const Discord = require('discord.js');
const {token, prefix} = require('./config.json');
var {tracker} = require('./config.json');
const {help} = require('./messages');
const bot = new Discord.Client();

// Запуск
bot.on('ready', () => {
    console.log('I am ready!');
});


// Основной ивент
bot.on('message', message => {
  let text = message.content;
  if (text.startsWith(prefix)){
    // Переменные контроллера
    let msg = text.split(' ');
    let command = msg[0].slice(1);
    let args = msg.slice(1);

    // Главный контроллер
    switch(command){
      case 'search':
        if (args[0]==undefined) break;
        let trackerName = '';
        args.forEach(element => {
          trackerName += ' '+element;
        });

        // аааааааааааааааааааааааааааааааааадскиииииииииииииииииий аааааааааааааааааааааааааааааааааааааааааад
        let request = require("request"),
              cheerio = require("cheerio"),
              URL = 'https://torlook.info/'+trackerName;
        request(URL, (err, response, body) => {
            if (!err){
                let trackers = [];
                const $ = cheerio.load(body);
                $('div.item').each((i,element)=>{
                    let elm = cheerio.load(element);
                    let obj = {
                        name: elm('a').html().replace(/<\/?b>/g,'**'),
                        value: 
                      `
      Раздача: ${elm('a').attr('href')}
      Раздающих: ${elm('.seeders').text()}
      Качающих: ${elm('.leechers').text()}
      Вес: ${elm('.size').text()}
      Трэкер: ${elm('.h2 > a').html()}
      Дата: ${elm('.date').text()}`
                  }
                  trackers.push(obj);
                });
                console.log(trackers[0]);
                message.channel.send(trackers[0]);
            }  
          else console.log(err);
        });
        // аааааааааааааааааааааааааааааааааадскиииииииииииииииииий аааааааааааааааааааааааааааааааааааааааааад
        break;
      case 'help':
        message.channel.send(help);
        break;


      default:
        message.channel.send('Неизвестная команда. Список команд можно узнать по команде !help')
        break;
    }
  }
})

// Запуск бота
 bot.login(token);

Там, где происходит печать в консоль и отправка данных происходит что-то непонятное.

console.log(trackers[0]);
message.channel.send(trackers[0]);

В консоль они выводятся, а когда они отправляются, то появляется ошибка

UnhandledPromiseRejectionWarning: DiscordAPIError: Cannot send an empty message

Как сообщение может быть пустым, если я его буквально секунду назад вывел? Причём в консоли СНАЧАЛА выводятся данные, а ПОТОМ ошибка, то есть, они появляются раньше самой ошибки


Ответы (1 шт):

Автор решения: Cipher

Я думаю, что ваша проблема в том, что вы пытаетесь отправить объект в качестве сообщения. Т.к. trackers[0] не является строкой, а является объектом, Discord при отправке сообщения пытается применить к нему свои методы .toStirng() в результате чего возвращается пустое значение. Попробуйте использовать следующий вариант

message.channel.send(trackers[0].value);
→ Ссылка