@tupkalov/telegramthread-redis-storage
v1.0.0
Published
Redis storage module for Telegram bot message chains and metadata
Maintainers
Readme
telegramthread-redis-storage
Универсальный npm модуль для хранения цепочек сообщений Telegram в Redis с поддержкой метаданных.
🎯 Возможности
- ✅ Сохранение цепочек сообщений - автоматическое построение истории диалога
- ✅ Метаданные - храните режимы работы, контекст, топики
- ✅ Восстановление контекста - при reply на старое сообщение восстанавливается режим
- ✅ TTL управление - автоматическое истечение старых записей
- ✅ Универсальность - работает с любыми Telegram ботами
- ✅ Обратная совместимость - работает с существующим кодом
📦 Установка
npm install telegramthread-redis-storageИли локально из workspace:
npm install file:../telegramthread-redis-storage🚀 Быстрый старт
import TelegramStorage from 'telegramthread-redis-storage';
// Создание экземпляра
const storage = new TelegramStorage({
redisUrl: 'redis://localhost:6379',
prefix: 'mybot',
ttl: 60 * 60 * 24 * 7 // 7 дней
});
// Подключение
await storage.connect();
// Сохранение сообщения с метаданными
await storage.save(message, {
mode: 'mentor',
topic: 'testing'
});
// Получение цепочки
const chain = await storage.getChainFrom(message, { maxCount: 10 });
// Получение метаданных
const metadata = await storage.getMetadata(chatId, messageId);API
Constructor Options
redisUrl(string) - URL подключения к Redis (по умолчанию:redis://redis:6379)prefix(string) - Префикс для ключей в Redis (по умолчанию:'')ttl(number) - Время жизни записей в секундах (по умолчанию:604800- 7 дней)
Методы
connect()
Подключается к Redis серверу.
save(message, metadata = {})
Сохраняет сообщение и его метаданные.
getChainFrom(origMessage, options = {})
Получает цепочку сообщений, начиная с указанного.
Опции:
maxCount(number) - Максимальное количество сообщений в цепочке (по умолчанию: 10)
getMetadata(chatId, messageId)
Получает метаданные сообщения.
clearByChatId(chatId)
Удаляет все сообщения и метаданные чата.
disconnect()
Закрывает соединение с Redis.
Формат сохраняемых данных
Сообщение
{
id: number,
chat: { id: number },
text: string,
date: number,
// ... другие поля сообщения
}Метаданные
{
mode: string, // Режим работы бота
topic: string, // Тема обсуждения
// ... любые другие данные
}💼 Использование в проектах
В telegram-qa-mentor
Модуль используется через MessageStorageService для сохранения истории и восстановления контекста при reply.
В bairisbot
Модуль используется через адаптер в storage.js для обратной совместимости.
🔧 Конфигурация
Переменные окружения
REDIS_URL=redis://redis:6379
REDIS_PREFIX=mybotDocker Compose
services:
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis-data:/data
command: redis-server --appendonly yes📚 Дополнительная документация
🧪 Тестирование
# Проверка подключения
docker exec -it redis redis-cli PING
# Просмотр данных
docker exec -it redis redis-cli KEYS "*message*"📝 Лицензия
MIT
