A simple and lightweight Node.js library for sending messages to Telegram channels and chats using a bot.
- Features
- Requirements
- Installation
- Quick Start
- Detailed Usage
- API Reference
- Getting Chat ID
- Usage Examples
- Security
- Testing
- License
- Simple class-based API
- Written in TypeScript with full type support
- Uses native
fetchfrom Node.js - No unnecessary dependencies
- Parameter validation
- Support for various parsing modes (Markdown, HTML)
- Node.js >= 18.0.0
- Telegram Bot Token
npm install telerolo
# or
yarn add teleroloimport { Telerolo } from 'telerolo';
import 'dotenv/config'; // To load environment variables
// Create a Telerolo instance with your bot token
const telerolo = new Telerolo({
botToken: process.env.TELEGRAM_BOT_TOKEN,
});
// Send a message
async function sendMessage() {
try {
await telerolo.sendMessage({
chatId: '-1001234567890', // Chat or channel ID
message: 'Hello, world! π',
});
console.log('Message sent!');
} catch (error) {
console.error('Error sending message:', error);
}
}import { Telerolo } from 'telerolo';
const telerolo = new Telerolo({
botToken: 'YOUR_BOT_TOKEN_HERE',
});await telerolo.sendMessage({
chatId: '@my_channel',
message: 'Simple text message',
});// Markdown formatting
await telerolo.sendMessage({
chatId: '@my_channel',
message: '*Bold text* and _italic_',
parseMode: 'Markdown',
});
// HTML formatting
await telerolo.sendMessage({
chatId: '@my_channel',
message: '<b>Bold text</b> and <i>italic</i>',
parseMode: 'HTML',
});
// MarkdownV2 (recommended for complex formatting)
await telerolo.sendMessage({
chatId: '@my_channel',
message: '*Bold text* and _italic_ with [link](https://example.com)',
parseMode: 'MarkdownV2',
});await telerolo.sendMessage({
chatId: '@my_channel',
message: 'Message with link https://example.com',
disableWebPagePreview: true,
});interface TeleroloOptions {
botToken: string; // Your Telegram bot token
}interface SendMessageParams {
chatId: string; // Chat or channel ID
message: string; // Message text
parseMode?: ParseMode; // Parsing mode (default: 'MarkdownV2')
disableWebPagePreview?: boolean; // Disable link preview
}type ParseMode = 'Markdown' | 'MarkdownV2' | 'HTML';Use our dedicated bot @get_my_channel_id_bot:
- Add the bot to your channel or group as administrator
- Send
@get_my_channel_id_botmessage to the channel/group - The bot will reply with the chat ID
- Add bot to channel as administrator
- Send any message to the channel
- Visit:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates - Find
chat.idin the response
- Add bot to the group
- Send a message to the group
- Check updates via API as mentioned above
- Chat ID will be a positive number (e.g.,
123456789) - For channels and groups - negative number (e.g.,
-1001234567890)
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',
});
}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',
});
}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',
});
}- Never commit bot token to repository
- Use environment variables to store the token
- Limit bot permissions to only necessary functions
npm run test