Skip to content

flancer32/teq-telegram-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@flancer32/teq-telegram-bot

A foundational npm package for building Telegram bots using grammY and @teqfw/di.

Overview

This package facilitates the creation of Telegram bots leveraging the grammY library (Habr post in Russian). Key features include:

  • Loading bot configuration (e.g., token) from external sources like a JSON file.
  • Supporting two operational modes:
    • Bot mode: Uses long polling.
    • Webhook server mode:
      • Operates over HTTP/HTTP2 behind a proxy.
      • Supports HTTPS as a standalone server.
  • Common setup tasks (e.g., registering commands at startup, setting up webhooks).
  • Extension points to add custom application logic.

Use Cases

Installation

To integrate the bot library in an npm application:

npm i @flancer32/teq-telegram-bot

Usage

The package includes several commands for managing bot modes and server operations:

./bin/tequila.mjs help
./bin/tequila.mjs tg-bot-start         # Start in long polling mode
./bin/tequila.mjs tg-bot-stop
./bin/tequila.mjs web-server-start     # Start in webhook mode
./bin/tequila.mjs web-server-stop

Configuration

Configure the main application with a local.json file in the ./cfg directory:

{
  "@flancer32/teq-telegram-bot": {
    "apiKeyTelegram": "YOUR_TELEGRAM_API_KEY",
    "webhookSecret": "YOUR_OPTIONAL_WEBHOOK_SECRET"
  }
}
  • apiKeyTelegram: Your Telegram Bot API key, required to authenticate the bot with Telegram servers.
  • webhookSecret (optional): A secret token to secure webhook requests. If not provided, a random one-time token will be generated by the application on startup.

API

To implement custom bot logic, create a class that follows the Telegram_Bot_Back_Api_Setup interface. This class should initialize the grammY bot, set up middleware, and define bot commands and handlers.

Setup Replacement in @teqfw/di

Specify the custom setup class in the ./teqfw/json configuration file to override the default bot setup:

{
  "@teqfw/di": {
    "autoload": {},
    "replaces": {
      "back": {
        "Telegram_Bot_Back_Api_Setup": "YourApp_Back_Bot_Setup"
      }
    }
  }
}

Replace "YourApp_Back_Bot_Setup" with the fully qualified name of your custom setup class.