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

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

22.01.2019, 01:38. Показов 4059. Ответов 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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2019, 01:38
Ответы с готовыми решениями:

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

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

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

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

5
Всегда онлайн
1077 / 781 / 295
Регистрация: 07.04.2013
Сообщений: 2,692
22.01.2019, 16:51 2
Цитата Сообщение от VENtura12 Посмотреть сообщение
Как сделать так, чтобы то что спарсерил отправлялось сообщением в телеграмм???
Javascript
1
2
3
var parsedContent = ...;
 
bot.sendMessage(messageChatId, parsedContent );
Здесь я пропустил значение для parsedContent, я так как не понимаю что это за API. Вам нужно просто просвоить этой переменной спарсенный вами текст.
0
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 66
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
187 / 124 / 24
Регистрация: 16.03.2017
Сообщений: 1,440
23.01.2019, 10:39 4
Цитата Сообщение от VENtura12 Посмотреть сообщение
message text is empty
Вроде ясно... вы пытаетесь выслать пустое сообщение.
0
0 / 0 / 0
Регистрация: 04.12.2018
Сообщений: 66
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
187 / 124 / 24
Регистрация: 16.03.2017
Сообщений: 1,440
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2019, 01:29

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Telegram Bot
1)Как реализовать клавиатуру как на фото? 2)Почему запуская myBot.py пишу ему сообщение в...

Telegram Bot
Пытался сделать телеграм бота через модули, как описано здесь...

Telegram bot
Хочу написать бота для телеграмма, чтобы оповещал о приходе сообщений от определенного отправителя....

Bot telegram
Кто знает почему бот видит только сообщения у которых в начале / ? Как это пофиксить? import...


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

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

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