How to receive my own telegram messages in node.js without bot

Victor Hugo Calderon picture Victor Hugo Calderon · Oct 23, 2017 · Viewed 11.3k times · Source

I would like to have a very simple client in nodejs (an example) that can receive messages from my contacts in telegram. I just searched in internet but I only get bot samples. I want to receive group messages in what I don't have access to give privileges to my bot so I would like to know if I can receive my own messages with no bot as intermediary.

Answer

gokcand picture gokcand · Jan 6, 2018

Well... Other answers give examples from unmaintained libraries. Hence, you should not rely on these libraries.

See: telegram.link is dead


You should use the newest Telegram client library which is telegram-mtproto

1. Obtain your api_id and api_hash from:

Telegram Apps

2. Install the required client library:

npm install telegram-mtproto@beta --save

3. Initialize your node.js application with api_id and api_hash you got from Telegram Apps and with your phone number:

import MTProto from 'telegram-mtproto'

const phone = {
  num : '+90555555555', // basically it is your phone number
  code: '22222' // your 2FA code
}

const api = {
  layer          : 57,
  initConnection : 0x69796de9,
  api_id         : 111111
}

const server = {
  dev: true //We will connect to the test server.
}           //Any empty configurations fields can just not be specified

const client = MTProto({ server, api })

async function connect(){
  const { phone_code_hash } = await client('auth.sendCode', {
    phone_number  : phone.num,
    current_number: false,
    api_id        : 111111, // obtain your api_id from telegram
    api_hash      : 'fb050b8fjernf323FDFWS2332' // obtain api_hash from telegram
  })
  const { user } = await client('auth.signIn', {
    phone_number   : phone.num,
    phone_code_hash: phone_code_hash,
    phone_code     : phone.code
  })
      console.log('signed as ', user);
    }

    connect();

4. Receive messages (The fun part! 👨🏻‍💻)

const telegram = require('./init') // take a look at the init.js from the examples repo

const getChat = async () => {
  const dialogs = await telegram('messages.getDialogs', {
    limit: 50,
  })
  const { chats } = dialogs;
  const selectedChat = await selectChat(chats);

  return selectedChat;
}

Furthermore, Take a look at the examples from the original repo: