Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript: Node.js
Войти
Регистрация
Восстановить пароль
 
VENtura12
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 42
1

Парсер + Telegram-bot-api

22.01.2019, 01:38. Просмотров 248. Ответов 5

Здравствуйте, форумчане! Вообщем есть парсер
Javascript
1
2
3
4
5
needle.get(url, function(err, res){
  if(err) throw err;
  var $ = cheerio.load(res.body);
  console.log($("p").text())
})
И есть телеграм бот
Javascript
1
2
3
4
5
6
7
8
bot.on('text', function(msg){
  var messageChatId = msg.chat.id;
  var messageText = msg.text;
  if(messageText === '/start'){
    bot.sendMessage(messageChatId,'Привет' );
 
  }
})
Как сделать так, чтобы то что спарсерил отправлялось сообщением в телеграмм???
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2019, 01:38
Ответы с готовыми решениями:

Telegram-bot. Error: read ECONNRESET
Доброго времени суток, форумчане. Возникла проблема: стал изучать создание телеграм ботов. Есть...

Steam bot
Добрый день. Задался целью создать стим бота для сайта. Решил пользоваться инструментам steamkit2,...

Discord bot.js
Как сделать чтобы использовался выбранный тобой префекс использовался командах бота (commands), а...

Steam trade bot
Есть у кого нибудь бот для трейда в стиме работающий после нововведения стима для подтверждения...

Telegram-бот
Здравствуйте! Разбираю пример телеграм-бота, написанного с помощью модуля node-telegram-bot-api.Бот...

5
MrOnlineCoder
Всегда онлайн
552 / 463 / 187
Регистрация: 07.04.2013
Сообщений: 1,943
Завершенные тесты: 2
22.01.2019, 16:51 2
Цитата Сообщение от VENtura12 Посмотреть сообщение
Как сделать так, чтобы то что спарсерил отправлялось сообщением в телеграмм???
Javascript
1
2
3
var parsedContent = ...;
 
bot.sendMessage(messageChatId, parsedContent );
Здесь я пропустил значение для parsedContent, я так как не понимаю что это за API. Вам нужно просто просвоить этой переменной спарсенный вами текст.
0
VENtura12
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 42
23.01.2019, 07:47  [ТС] 3
MrOnlineCoder, Пробовал, выдает ошибку при отправке, яя использую telegram-bot-api, cheerio,needle, там в коде мелькало название api. Ошибка такая
Unhandled rejection Error: ETELEGRAM: 400 Bad Request: message text is empty
at request.then.resp (D:\node.js\projects\parser\node_modules\node-telegram-bot-api\src\telegram.js:280:15)
at tryCatcher (D:\node.js\projects\parser\node_modules\bluebird\js\release\util.js:16:23)
at Promise._settlePromiseFromHandler (D:\node.js\projects\parser\node_modules\bluebird\js\release\promise.js:512:31)
at Promise._settlePromise (D:\node.js\projects\parser\node_modules\bluebird\js\release\promise.js:569:18)
at Promise._settlePromise0 (D:\node.js\projects\parser\node_modules\bluebird\js\release\promise.js:614:10)
at Promise._settlePromises (D:\node.js\projects\parser\node_modules\bluebird\js\release\promise.js:694:18)
at _drainQueueStep (D:\node.js\projects\parser\node_modules\bluebird\js\release\async.js:138:12)
at _drainQueue (D:\node.js\projects\parser\node_modules\bluebird\js\release\async.js:131:9)
at Async._drainQueues (D:\node.js\projects\parser\node_modules\bluebird\js\release\async.js:147:5)
at Immediate.Async.drainQueues [as _onImmediate] (D:\node.js\projects\parser\node_modules\bluebird\js\release\async.js:17:14)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
0
andyj
120 / 63 / 14
Регистрация: 16.03.2017
Сообщений: 744
23.01.2019, 10:39 4
Цитата Сообщение от VENtura12 Посмотреть сообщение
message text is empty
Вроде ясно... вы пытаетесь выслать пустое сообщение.
0
VENtura12
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 42
24.01.2019, 22:26  [ТС] 5
Гений, как мне это исправить? Ведь я вывожу в консоли то что спарсил, но отправить сообщение боту, чтобы тот отправил мне в телеге не могу... Я присвоил переменной значение парсера, и поставил на место 'Привет', но в итоге ошибка, пустой текст передаю.

Добавлено через 3 минуты
andyj, Я даже то что спарсил в json перевел и в файл скопировал и из него уже брал текст, но бестолку. Та же ошибка, код:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bot.on('text', function(msg){
  var messageChatId = msg.chat.id;
  var messageText = msg.text;
  var open;
  if(messageText === '/start'){
    bot.sendMessage(messageChatId, JSON.parse('text.txt') );
  }
})
needle.get(url, function(err, res){
  if(err) throw err;
  var $ = cheerio.load(res.body);
  var strJson = $("p").text()
  fs.writeFileSync('text.txt', strJson);
})
Добавлено через 34 минуты
MrOnlineCoder, Я так и делал, но вылетает ошибка что я передаю пустой текст. Telegrem-bot-api, needle, cheerio
0
andyj
120 / 63 / 14
Регистрация: 16.03.2017
Сообщений: 744
25.01.2019, 01:29 6
Цитата Сообщение от VENtura12 Посмотреть сообщение
Гений, как мне это исправить?
Где-то ты перемудрил! Научись сначала простую строку в бот отправлять, а только потом прикручивай парсер... Я пользуюсь своей (довольно сложной) "обверткой" над ТелеграмАПИ, поэтому тяжело снова потроха вскрывать, но насколько я помню... (зависит от АПИ - их минимум 2 варианта)

bot.sendMessage(messageChatId, "Привет");, где messageChatId = код юзера. Например msg.from.id или msg.chat.id, или взять из константы.

Можно так:
Javascript
1
2
3
4
5
6
7
bot.sendMessage(msg.from.id, "Привет")
        .then((msg_info) => {
            // доставлено
        .catch(error => {
            console.log('Error:', error.message)
            // console.log('Error:', error)
        });
Как только убедишься что бот работает "в холостом режиме", только тогда начинай прикручивать парсер. При этом ничего сложного нет - просто результат/строку перед отправкой проверь на пустую и "левые символы", а потом отправь в эту функцию...
0
25.01.2019, 01:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2019, 01:29

Api Telegram Bot
Захотелось попробовать написать бота для телеграмм. Решил писать без библиотек, просто запросы....

Telegram Bot api удаление данных БД inline клавиатурой
Подскажите, пожалуйста, как реализовать удаление из базы данных вопроса. 1.callback_data кнопки...

Бот telegram не может подключиться к https://api.telegram.org:443: (Java)
Здравствуйте! Возникла такая проблема при запуске бота в intelij idea ultimate программа выдает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru