Пропадают данные в 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 шт):
Я думаю, что ваша проблема в том, что вы пытаетесь отправить объект в качестве сообщения. Т.к. trackers[0] не является строкой, а является объектом, Discord при отправке сообщения пытается применить к нему свои методы .toStirng() в результате чего возвращается пустое значение.
Попробуйте использовать следующий вариант
message.channel.send(trackers[0].value);