advanced-local-session
v1.0.3
Published
Это удобная библиотека для локального хранения сессий и глобальных настроек в боте
Maintainers
Readme
Advanced Local Session
Это удобная библиотека для локального хранения сессий и глобальных настроек в боте
📌 Особенности:
- Хранение сессий локально в JSON-файле
- Простое управление глобальными настройками
- Поддержка кэширования данных для ускорения доступа
- Интеграция методов в ctx для удобного использования
🚀 Установка
npm install advanced-local-session
📌 Пример работы
import { Telegraf } from'telegraf';
import { AdvancedLocalSession } from 'advanced-local-session';
const bot = new Telegraf('YOUR_BOT_TOKEN');
const session = new AdvancedLocalSession({
storagePath: './sessions.json', // Путь к файлу для хранения
global: {
dev_mode: false,
admins: [123456789] // ID администраторов
},
});
bot.use(session.middleware());
// Пример использования
bot.command('ping', (ctx) => {
ctx.reply('🏓 Pong!');
ctx.session.counter = (ctx.session.counter || 0) + 1;
console.log(`Количество запросов: ${ctx.session.counter}`);
});
bot.launch();📂 Формат sessions.json
После первого запуска в корне проекта появится файл sessions.json:
{
"users": {
"123456789": {
"counter": 5
}
},
"global": {
"dev_mode": false,
"admins": [123456789]
}
}🔹 Методы класса AdvancedLocalSession
| Метод | Описание | Пример использования | |----------------|:---------:|----------------:| | middleware() | Подключает middleware в Telegraf | bot.use(session.middleware()); | | getAllUsers() | Возвращает список всех пользователей | const users = session.getAllUsers(); | | getUserById(id) | Получает данные пользователя по ID | const user = session.getUserById(123456789); | | removeUser(id) | Удаляет данные пользователя | session.removeUser(123456789); | | getGlobal(key) | Получает значение из глобальных настроек | const mode = session.getGlobal('dev_mode'); | | setGlobal(key, v) | Устанавливает значение в глобальные настройки | session.setGlobal('dev_mode', true); |
🔹 Методы из контекста (ctx)
Благодаря middleware, в ctx автоматически добавляются удобные методы:
➡️ ctx.getGlobal(key)
Получает значение из глобальных настроек.
bot.command('checkmode', (ctx) => {
const mode = ctx.getGlobal('dev_mode');
ctx.reply(`🛠 Dev Mode: ${mode ? 'Включен' : 'Выключен'}`);
});➡️ ctx.setGlobal(key, value)
Устанавливает значение в глобальных настройках.
bot.command('togglemode', (ctx) => {
const currentMode = ctx.getGlobal('dev_mode');
ctx.setGlobal('dev_mode', !currentMode);
ctx.reply(`🔄 Dev Mode переключён на: ${!currentMode}`);
});➡️ ctx.session
Работа с сессией пользователя через ctx.session.
bot.on('text', (ctx) => {
ctx.session.messageCount = (ctx.session.messageCount || 0) + 1;
ctx.reply(`💬 Вы отправили ${ctx.session.messageCount} сообщений.`);
});