Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Telegram Bot with Telegraf.js - Send messages to chat

I want to create a Telegram Bot with Node.js and I am using Telegraf for it. I know I can answer to messages like this:

app.hears('hi', (ctx) => ctx.reply('Hey there!'))

But how can I send a message without getting a message before? I want to read a file and always when the file got changed I want to send a message.

const Telegraf = require('telegraf');
var fs = require('fs');

const app = new Telegraf(process.env.BOT_TOKEN);

var filePath = "C:\\path\\to\\my\\file.txt";

fs.watchFile(filePath, function() {
    file = fs.readFileSync(filePath);

    // Send message to chat or group with the file content here

    console.log("File content at: " + new Date() + " is: \n" + file);
})

Would be nice if someone can help me with it.

like image 596
Nono Avatar asked May 04 '17 21:05

Nono


People also ask

Can I send message by bot in Telegram?

Post one message from User to the Bot. Open https://api.telegram.org/bot<Bot_token>/getUpdates page. Find this message and navigate to the result->message->chat->id key. Use this ID as the [chat_id] parameter to send personal messages to the User.

Can Telegram Bot send message to group?

Yes you can, you have to invite the bot into the group, grab the chat_id of the group and send the message as you are sending a normal message to a private user.


1 Answers

You can use app.telegram.sendMessage for that, see following snippet.

const Telegraf = require('telegraf');
var fs = require('fs');

const app = new Telegraf(process.env.BOT_TOKEN);

var filePath = "C:\\path\\to\\my\\file.txt";

fs.watchFile(filePath, function() {
  file = fs.readFileSync(filePath);
  app.telegram.sendMessage(chatId, "File content at: " + new Date() + " is: \n" + file);
})
like image 66
Vitaly Domnikov Avatar answered Sep 26 '22 19:09

Vitaly Domnikov