@mtproto/core
Telegram API JS (MTProto) client library for browser and nodejs
Install
yarn add @mtproto/core -E
npm i @mtproto/core -E
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,
});
mtproto.call('help.getNearestDc').then(result => {
console.log(`country:`, result.country);
});
API
new MTProto({ api_id, api_hash, test, customLocalStorage }) => mtproto
api_id: number
and api_hash: string
api_id and api_hash are required. If you do not have them yet, then get them according to the official instructions: creating your Telegram application.
test: boolean
Default: false
. Use test data centers. On test servers, you can use test phone numbers.
customLocalStorage: localStorage
Default for browser: window.localStorage
. Default for nodejs: node-localstorage
. Custom storage for save auth data. Your localStorage must follow this API:
interface MyAsyncLocalStorage {
setItem(key: string, value: string): Promise;
getItem(key: string): Promise<string>;
}
We have ready-made storage:
- tempLocalStorage only stores data while the script is running
Example:
const { tempLocalStorage } = require('@mtproto/core/src/storage/temp');
const mtproto = new MTProto({
customLocalStorage: tempLocalStorage,
});
mtproto.call(method, params, options) => Promise
method: string
Method name from methods list.
params: object
Parameters for method
from https://core.telegram.org/method/{method}#parameters
.
If you need to pass a constructor use _
. Example for users.getFullUser:
const params = {
id: {
_: 'inputUserSelf',
},
};
options.dcId: number
Specific DC id. By default, it is 2
. You can change the default value using mtproto.setDefaultDc method.
options.syncAuth: boolean
Default: true
. Copy authorization to all DC if the response contains auth.authorization
.
Example:
mtproto.call('help.getNearestDc', {}, {
dcId: 1
}).then(result => {
console.log('result:', result);
}).catch(error => {
console.log('error.error_code:', error.error_code);
console.log('error.error_message:', error.error_message);
});
mtproto.updates.on(updates, listener)
Method for handles updates.
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.setDefaultDc(dcId) => Promise
If a migration error occurs, you can use this function to change the default data center. You can also use options.dcId.
See the example in the authentication.
getSRPParams({ g, p, salt1, salt2, gB, password }) => { A, M1 }
Function to calculate parameters for 2FA (Two-factor authentication). For more information about parameters, see the article on the Telegram website.
See the example in the authentication.
Cases
Useful references