1.0.1 • Published 11 months ago

dewart-telegram-bot-daemon v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
11 months ago

Пакет dewart-telegram-bot-daemon

Оболочка вокруг node-telegram-bot

Данная оболочка создана для исправления проблемы множественной отправки сообщений пакета node-telegram-bot. Оболочка создаёт глобальную очередь сообщений, которая не даёт боту отправлять сообщения чаще, чем раз в 50 миллисекунд (Telegram запрещает отправлять сообщения чаще, чем раз в 30 миллисекунд). Для каждого чата, создаётся отдельная очередь, которая раз в 5 секунд отправляет 1 сообщение в глобальную очередь.

В случае, если пользователь отправил сообщение, таймаут отправки обнуляется, что позволяет достичь максимальной скорости отправки при сохранении отказоустойчивости бота.

Начало работы

Установка пакета

Установите пакет из репозитория npm. Для этого в терминале введите команду:

npm install dewart-telegram-bot-daemon

Подключение в проект

Оболочка работает для ES модулей.

import TelegramBot from "dewart-telegram-bot-daemon"

Инициализация бота

Синтаксис инициализации бота:

const bot = new TelegramBot(token: string, delay: number, chatDelay: number)
  • token - Токен вашего Telegram-бота;
  • delay - Задержка между отправкой сообщений в глобальной очереди;
  • chatDelay - Задержка медлу отправкой сообщений для определённого чата.

Использование

Бот полностью повторяет интерфейс отправки сообщений с различным содержимым пакета node-telegram-api. Документация - node-telegram-api.

Обратите внимание. Оболочка может отправлять только сообщения. Прочее взаимодействие с библиотекой необходимо осуществлять с объектом TelegramApi. Для того, чтобы получить объект TelegramApi, Используйте метод this(), объекта бота. Пример использования:

const botDaemon = new TelegramBot(<token>, 50, 10000);
const bot = botDaemon.this();
bot.on("message", (message)=>{
    ...
    botDaemon.sendMessage(<chatId>, "Hello, world. I'm Bot!");
    botDaemon.sendMessage(<chatId>, "10 seconds have passed");
    botDaemon.sendMessage(<chatId>, "20 seconds have passed");
    botDaemon.sendMessage(<chatId>, "30 seconds have passed");
    botDaemon.sendMessage(<chatId>, "40 seconds have passed");
})