Telegram бот с персонализированными уведомлениями о вакансиях на основе предпочтений пользователя.
# 1. Установите зависимости
npm install
# 2. Настройте .env файл
cp env.template .env
# Заполните все переменные
# 3. Создайте таблицы в Supabase
# Выполните database/simple-new-tables.sql
# 4. Запустите бота
npm run dev-full/start- Главное меню/vacancies- Список вакансий/my_subscriptions- Просмотр подписки/webapp- Открыть форму подписки/help- Справка/sync- Синхронизация (админ)
Пользователи могут просматривать актуальные вакансии по категориям и откликаться прямо в боте.
Через WebApp форму пользователи заполняют свои предпочтения (направления, технологии, опыт, формат работы).
Каждые 2 часа бот автоматически находит подходящие вакансии для каждого пользователя на основе совпадения тегов и отправляет уведомления.
- Каждые 30 минут - синхронизация вакансий из Google Sheets
- Каждый час - синхронизация вопросов для WebApp
- Каждые 2 часа - рассылка персонализированных уведомлений
- Ежедневно в 9:00 и 18:00 - полная синхронизация
kate_bot/
├── src/
│ ├── commands/ # Команды бота
│ ├── actions/ # Callback действия
│ ├── services/ # Бизнес-логика
│ │ ├── supabase/ # Работа с БД
│ │ └── notification/ # Рассылка уведомлений
│ ├── api/ # API endpoints для WebApp
│ └── handlers/ # Обработчики сообщений
├── webapp/ # WebApp форма подписки
├── database/ # SQL схемы
└── scripts/ # Утилиты
# Telegram
BOT_TOKEN=your_bot_token
ADMIN_ID=your_telegram_id
# Supabase
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_key
# Google Sheets
GOOGLE_SHEETS_ID=your_sheets_id
GOOGLE_QUESTIONS_SHEET_ID=your_questions_sheet_id
# WebApp
WEBAPP_URL=http://localhost:3001/webapp/index.html
# Webhook (optional)
ENABLE_WEBHOOK=true
WEBHOOK_PORT=3001vacancies- Вакансииresponses- Отклики пользователейuser_preferences- Предпочтения пользователейuser_tags- Теги пользователейvacancy_tags- Теги вакансийnotifications- История отправленных уведомленийsurvey_categories- Категории вопросовsurvey_fields- Поля вопросов
- Получить всех пользователей с активными подписками
- Для каждого пользователя найти его теги (
user_tags) - Найти вакансии с совпадающими тегами (
vacancy_tags) - Отфильтровать (минимум 2 совпадения, не отправленные ранее)
- Отправить топ-5 самых релевантных вакансий
- Записать факт отправки в
notifications
Полная документация: SYSTEM_FLOW.md
- Node.js - Runtime
- Telegraf - Telegram Bot Framework
- Supabase - База данных
- Express - WebApp API
- Google Sheets API - Управление контентом
- node-cron - Планировщик задач
MIT
Версия: 3.2.0
Дата: 2025-10-01