Skip to content

termitkin/telerolo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

25 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Telerolo

npm version

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
# or
yarn add telerolo

πŸš€ Quick Start

import { 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);
  }
}

πŸ“– 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

// 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',
});

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; // Your Telegram bot token
}

SendMessageParams

interface SendMessageParams {
  chatId: string;                    // Chat or channel ID
  message: string;                   // Message text
  parseMode?: ParseMode;             // Parsing mode (default: 'MarkdownV2')
  disableWebPagePreview?: boolean;   // Disable link preview
}

ParseMode

type ParseMode = 'Markdown' | 'MarkdownV2' | 'HTML';

πŸ†” Getting Chat ID

Easy Method (Recommended):

Use our dedicated bot @get_my_channel_id_bot:

  1. Add the bot to your channel or group as administrator
  2. Send @get_my_channel_id_bot message to the channel/group
  3. The bot will reply with the chat ID

Manual Method:

For Channel:

  1. Add bot to channel as administrator
  2. Send any message to the channel
  3. Visit: https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
  4. Find chat.id in the response

For Group:

  1. Add bot to the group
  2. Send a message to the group
  3. 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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors