dewart-telegram-bot-daemon
v1.0.1
Published
Оболочка вокруг библиотеки node-telegram-bot, которая частично исправляет ппробелу отправки большого количества сообщений в чат за единицу времени.
Downloads
1
Maintainers
Readme
Пакет 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");
})