Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gram-js/gramjs
NodeJS/Browser MTProto API Telegram client library,
https://github.com/gram-js/gramjs
api-client browser hacktoberfest javascript mtproto nodejs telegram telegram-client
Last synced: 12 days ago
JSON representation
NodeJS/Browser MTProto API Telegram client library,
- Host: GitHub
- URL: https://github.com/gram-js/gramjs
- Owner: gram-js
- License: mit
- Created: 2019-08-11T20:02:45.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-10-05T10:54:12.000Z (about 1 month ago)
- Last Synced: 2024-10-12T20:32:20.845Z (29 days ago)
- Topics: api-client, browser, hacktoberfest, javascript, mtproto, nodejs, telegram, telegram-client
- Language: TypeScript
- Homepage:
- Size: 3.59 MB
- Stars: 1,266
- Watchers: 12
- Forks: 178
- Open Issues: 244
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GramJS
A Telegram client written in JavaScript for Node.js and browsers, with its core being based on
[Telethon](https://github.com/LonamiWebs/Telethon).## How to get started
Here you'll learn how to obtain necessary information to create telegram application, authorize into your account and send yourself a message.
> **Note** that if you want to use a GramJS inside of a browser, refer to [this instructions](https://gram.js.org/introduction/advanced-installation).
Install GramJS:
```bash
$ npm i telegram
```After installation, you'll need to obtain an API ID and hash:
1. Login into your [telegram account](https://my.telegram.org/)
2. Then click "API development tools" and fill your application details (only app title and short name required)
3. Finally, click "Create application"> **Never** share any API/authorization details, that will compromise your application and account.
When you've successfully created the application, change `apiId` and `apiHash` on what you got from telegram.
Then run this code to send a message to yourself.
```javascript
import { TelegramClient } from "telegram";
import { StringSession } from "telegram/sessions";
import readline from "readline";const apiId = 123456;
const apiHash = "123456abcdfg";
const stringSession = new StringSession(""); // fill this later with the value from session.save()const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});(async () => {
console.log("Loading interactive example...");
const client = new TelegramClient(stringSession, apiId, apiHash, {
connectionRetries: 5,
});
await client.start({
phoneNumber: async () =>
new Promise((resolve) =>
rl.question("Please enter your number: ", resolve)
),
password: async () =>
new Promise((resolve) =>
rl.question("Please enter your password: ", resolve)
),
phoneCode: async () =>
new Promise((resolve) =>
rl.question("Please enter the code you received: ", resolve)
),
onError: (err) => console.log(err),
});
console.log("You should now be connected.");
console.log(client.session.save()); // Save this string to avoid logging in again
await client.sendMessage("me", { message: "Hello!" });
})();
```> **Note** that you can also save auth key to a folder instead of a string, change `stringSession` into this:
>
> ```javascript
> const storeSession = new StoreSession("folder_name");
> ```Be sure to save output of `client.session.save()` into `stringSession` or `storeSession` variable to avoid logging in again.
## Running GramJS inside browsers
GramJS works great in combination with frontend libraries such as React, Vue and others.
While working within browsers, GramJS is using `localStorage` to cache the layers.
To get a browser bundle of GramJS, use the following command:
```bash
NODE_ENV=production npx webpack
```You can also use the helpful script `generate_webpack.js`
```bash
node generate_webpack.js
```## Calling the raw API
To use raw telegram API methods use [invoke function](https://gram.js.org/beta/classes/TelegramClient.html#invoke).
```javascript
await client.invoke(new RequestClass(args));
```## Documentation
General documentation, use cases, quick start, refer to [gram.js.org](https://gram.js.org), or [older version of documentation](https://painor.gitbook.io/gramjs) (will be removed in the future).
For more advanced documentation refer to [gram.js.org/beta](https://gram.js.org/beta) (work in progress).
If your ISP is blocking Telegram, you can check [My ISP blocks Telegram. How can I still use GramJS?](https://gist.github.com/SecurityAndStuff/7cd04b28216c49b73b30a64d56d630ab)
## Ask a question
If you have any questions about GramJS, feel free to open an issue or ask directly in our telegram group - [@GramJSChat](https://t.me/gramjschat).