Skip to content
/ bots Public

This project includes a Telegram bot implemented using the NestJS framework. The bot has various functionalities, including handling user commands, interacting with Redis for event streaming, and managing multiple worker processes for consuming and producing events.

Notifications You must be signed in to change notification settings

Vankum100/bots

Repository files navigation

Обзор Telegram-бота

Этот проект включает Telegram-бота, реализованного с использованием фреймворка NestJS. Бот имеет различные функциональные возможности, включая обработку пользовательских команд, взаимодействие с Redis для потоковой передачи событий и управление несколькими рабочими процессами для потребления и создания событий.

Структура проекта

Класс TelegramUpdate

Класс TelegramUpdate обрабатывает основные взаимодействия с ботом Telegram. Он слушает различные команды и сообщения и передает соответствующие действия другим сервисам.

Основные методы:

  • start: Вызывается при запуске бота.
  • startCommand: Обрабатывает команду /start.
  • restartCommand: Обрабатывает команду /restart.
  • poolOnCommand: Обрабатывает команду /poolon.
  • poolOffCommand: Обрабатывает команду /pooloff.
  • enableCommand: Обрабатывает команду /enable.
  • disableCommand: Обрабатывает команду /disable.
  • logoutCommand: Обрабатывает команду /logout.
  • selectStatusCommand: Обрабатывает команду /select.
  • selectStatusAction: Обрабатывает выбор статуса.
  • callbackQuery: Обрабатывает callback-запросы.
  • onText: Обрабатывает текстовые сообщения.
  • authorization: Обрабатывает контактную информацию для авторизации.

Бот использует такие сервисы, как UserService, CommandHandler, LoginScene и InteractionScene, чтобы управлять различными аспектами своей функциональности, такими как управление пользователями, обработка команд и переходы между сценами.

Класс EventProducer

Класс EventProducer отвечает за создание событий, которые будет потреблять бот. Он периодически проверяет наличие новых событий и отправляет их в поток Redis.

Основные методы:

  • onModuleInit: Инициализирует создание событий при запуске модуля.
  • onModuleDestroy: Очищает ресурсы при уничтожении модуля.
  • produceEvents: Извлекает события из Redis и обрабатывает их.
  • populateEvents: Настраивает интервал для периодического создания событий.

Класс EventConsumer

Класс EventConsumer предназначен для потребления событий из потока Redis и их обработки, включая отправку сообщений пользователям Telegram.

Основные методы:

  • onModuleInit: Инициализирует потребление событий при запуске модуля.
  • onModuleDestroy: Очищает ресурсы при уничтожении модуля.
  • sendTelegramMessage: Отправляет сообщение в чат Telegram.
  • consumeEvents: Извлекает сообщения из потока Redis и обрабатывает их.
  • processMessageQueue: Обрабатывает очередь сообщений и обрабатывает сообщения последовательно.
  • getMessagesFromStream: Получает сообщения из потока Redis.
  • createConsumerGroupIfNeeded: Обеспечивает создание группы потребителей Redis, если она не существует.
  • startConsumer: Запускает процесс потребления.
  • deleteExistingConsumers: Удаляет существующих потребителей из потока Redis.

Настройка кластера

Приложение использует кластеризацию для использования многоядерных процессоров, улучшая производительность и надежность.

Основные функции:

  • bootstrap: Инициализирует приложение и настраивает кластер. Если работает как главный процесс, настраивает группу потребителей Redis и форкает рабочие процессы. Также обрабатывает периодические обновления и очистку данных, если это необходимо.
  • bootstrapWorker: Инициализирует отдельные рабочие процессы.

Переменные окружения

  • MICROSERVICE_BOT_NAME: Имя микросервисного бота.
  • TELEGRAM_BOT_TOKEN: Токен для доступа к API Telegram-бота.
  • FLUSH_CONSUMERS: Флаг для определения необходимости очистки существующих потребителей.
  • FLUSH_AREAS: Флаг для определения необходимости очистки областей.
  • FLUSH_RANGEIPS: Флаг для определения необходимости очистки диапазонов IP.
  • consumerName: Имя экземпляра потребителя.

Запуск приложения

Для запуска приложения просто выполните npm install && npm run start:dev и в другом терминале npm run cli:consumer или npm run cli:consumers

About

This project includes a Telegram bot implemented using the NestJS framework. The bot has various functionalities, including handling user commands, interacting with Redis for event streaming, and managing multiple worker processes for consuming and producing events.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages