@mtproto/core

Telegram API (MTProto) client library for browser
- Actual. 108 layer in the API scheme
- Fast. Uses WebSocket to work with the network
- Easy. Cryptography is hidden. Just make requests to the API
- Events. Subscribe to updates via the EventEmitter API
- 2FA. Use the library's built-in function to calculate 2FA parameters
Install
Module
yarn add @mtproto/core -E
npm i @mtproto/core -E
Browser
It is not recommended to use it in production.
<script src="https://cdn.jsdelivr.net/npm/@mtproto/core@1.2.0/dist/mtproto.min.js"></script>
Quick start
You need api_id and api_hash. If you do not have them yet, then get them according to the official instructions: creating your Telegram application.
const MTProto = require('@mtproto/core');
const api_id = 'YOU_API_ID';
const api_hash = 'YOU_API_HASH';
const mtproto = new MTProto({
api_id,
api_hash,
test: true,
});
mtproto.call('help.getNearestDc').then(result => {
console.log(`country:`, result.country);
});
Login
const phone = '+9996621111';
const code = '22222';
mtproto
.call('auth.sendCode', {
phone_number: phone,
settings: {
_: 'codeSettings',
},
})
.then(result => {
mtproto
.call('auth.signIn', {
phone_code: code,
phone_number: phone,
phone_code_hash: result.phone_code_hash,
})
.then(result => {
console.log(`auth.signIn[result]:`, result);
})
.catch(error => {
if (error.error_message === 'SESSION_PASSWORD_NEEDED') {
}
});
});
2FA (Two-factor authentication)
const { getSRPParams } = require('@mtproto/core');
const password = 'YOU_PASSWORD';
mtproto
.call('account.getPassword')
.then(async result => {
const { srp_id, current_algo, srp_B } = result;
const { salt1, salt2, g, p } = current_algo;
const { A, M1 } = await getSRPParams({
g,
p,
salt1,
salt2,
gB: srp_B,
password,
});
return mtproto.call('auth.checkPassword', {
password: {
_: 'inputCheckPasswordSRP',
srp_id,
A,
M1,
},
});
})
.then(result => {
console.log(`auth.checkPassword[result]:`, result);
});
API
mtproto.call(method, options) => Promise
Select method and options from methods list. Promise.then
contain result. Promise.catch
contain error with the error_code
and error_message
properties.
Example:
mtproto.call('help.getNearestDc').then(result => {
console.log(`result:`, result);
}).catch(error => {
console.log(`error:`, error);
});
mtproto.updates.on(UpdatesName, handler)
Authorized users are being Updates. They can be handled using mtproto.updates.on
. Example of handling a updateShort with updateUserStatus:
mtproto.updates.on('updateShort', message => {
const { update } = message;
if (update._ === 'updateUserStatus') {
const { user_id, status } = update;
console.log(`User with id ${user_id} change status to ${status}`);
}
});
MTProto.getSRPParams({ g, p, salt1, salt2, gB, password }) => { A, M1 }
For more information about parameters, see the article on the Telegram website.
Example in 2FA (Two-factor authentication)
Useful references