Telerolo

A simple and lightweight Node.js library for sending messages to Telegram channels and chats using a bot.
๐ Table of Contents
โจ Features
- Simple class-based API
- Written in TypeScript with full type support
- Uses native
fetch
from Node.js
- No unnecessary dependencies
- Parameter validation
- Support for various parsing modes (Markdown, HTML)
๐ Requirements
- Node.js >= 18.0.0
- Telegram Bot Token
๐ฆ Installation
npm install telerolo
yarn add telerolo
๐ Quick Start
import { Telerolo } from 'telerolo';
import 'dotenv/config';
const telerolo = new Telerolo({
botToken: process.env.TELEGRAM_BOT_TOKEN,
});
async function sendMessage() {
try {
await telerolo.sendMessage({
chatId: '-1001234567890',
message: 'Hello, world! ๐',
});
console.log('Message sent!');
} catch (error) {
console.error('Error sending message:', error);
}
}
๐ Detailed Usage
Initialization
import { Telerolo } from 'telerolo';
const telerolo = new Telerolo({
botToken: 'YOUR_BOT_TOKEN_HERE',
});
Send Simple Message
await telerolo.sendMessage({
chatId: '@my_channel',
message: 'Simple text message',
});
Send Formatted Message
await telerolo.sendMessage({
chatId: '@my_channel',
message: '*Bold text* and _italic_',
parseMode: 'Markdown',
});
await telerolo.sendMessage({
chatId: '@my_channel',
message: '<b>Bold text</b> and <i>italic</i>',
parseMode: 'HTML',
});
await telerolo.sendMessage({
chatId: '@my_channel',
message: '*Bold text* and _italic_ with [link](https://example.com)',
parseMode: 'MarkdownV2',
});
Disable Web Page Preview
await telerolo.sendMessage({
chatId: '@my_channel',
message: 'Message with link https://example.com',
disableWebPagePreview: true,
});
๐ง API Reference
TeleroloOptions
interface TeleroloOptions {
botToken: string;
}
SendMessageParams
interface SendMessageParams {
chatId: string;
message: string;
parseMode?: ParseMode;
disableWebPagePreview?: boolean;
}
ParseMode
type ParseMode = 'Markdown' | 'MarkdownV2' | 'HTML';
๐ Getting Chat ID
Easy Method (Recommended):
Use our dedicated bot @get_my_channel_id_bot:
- Add the bot to your channel or group as administrator
- Send
@get_my_channel_id_bot
message to the channel/group
- The bot will reply with the chat ID
Manual Method:
For Channel:
- Add bot to channel as administrator
- Send any message to the channel
- Visit:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
- Find
chat.id
in the response
For Group:
- Add bot to the group
- Send a message to the group
- Check updates via API as mentioned above
For Private Chat:
- Chat ID will be a positive number (e.g.,
123456789
)
- For channels and groups - negative number (e.g.,
-1001234567890
)
๐ ๏ธ Usage Examples
Deploy Notifications
async function notifyDeploy(environment, version) {
await telerolo.sendMessage({
chatId: '@deploy_notifications',
message: `๐ *Deploy completed*\n\nEnvironment: \`${environment}\`\nVersion: \`${version}\`\nTime: ${new Date().toLocaleString()}`,
parseMode: 'MarkdownV2',
});
}
Error Monitoring
async function notifyError(error, context) {
await telerolo.sendMessage({
chatId: '@error_monitoring',
message: `โ *Application Error*\n\nError: \`${error.message}\`\nContext: \`${context}\`\nTime: ${new Date().toISOString()}`,
parseMode: 'MarkdownV2',
});
}
Daily Reports
async function sendDailyReport(stats) {
await telerolo.sendMessage({
chatId: '@daily_reports',
message: `๐ *Daily Report*\n\nUsers: ${stats.users}\nOrders: ${stats.orders}\nRevenue: $${stats.revenue}`,
parseMode: 'MarkdownV2',
});
}
๐ Security
- Never commit bot token to repository
- Use environment variables to store the token
- Limit bot permissions to only necessary functions
๐งช Testing
npm run test
๐ License
MIT