Интерактивный текстовый квест для Telegram, реализованный на базе n8n и Supabase. Проект создавался как MVP для демонстрации архитектуры чат-ботов, работы со стейтами и интеграции медиафайлов.
- n8n — оркестрация логики, маршрутизация и интеграция API.
- Supabase (PostgreSQL) — хранение состояний пользователей.
- Telegram Bot API — интерфейс взаимодействия.
- Управление состоянием (State Management): Прогресс каждого пользователя фиксируется в БД (
current_step), что позволяет продолжать игру после остановок или сбоев. - Нелинейность: Разветвленная логика решений через Switch-ноды, ведущая к 4 различным концовкам.
- Мультимедиа: Динамическая подгрузка аудио-окружения и изображений по внешним ссылкам.
- Изолированный роутинг: Раздельная обработка новых пользователей (
/start) и тех, кто уже есть в базе. - Обработка Callback Queries: Использование inline-кнопок для сброса стейта и бесшовного перезапуска квеста без захламления чата командами.
quest_bot.json— чистый экспорт воркфлоу n8n (без приватных ключей и ID инстанса).schema.sql— SQL-скрипт развертывания таблицы БД.MEDIA.md— спецификация медиа-ассетов.
Выполни SQL-запрос из schema.sql для создания таблицы пользователей и индексов:
CREATE TABLE quest_users (
user_id BIGINT PRIMARY KEY,
current_step TEXT DEFAULT 'start',
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_current_step ON quest_users(current_step);
## 2. Настройка n8n
1.Создай новый воркфлоу и импортируй quest_bot.json.
2.Настрой Credentials для Telegram API (токен от @BotFather) и Supabase API.
3.В нодах отправки медиа (Telegram) замени заглушки <YOUR_FILE_URL> на прямые ссылки на свои файлы.
4.Опубликуй воркфлоу (Publish) и скопируй Production URL из триггера Webhook.
## 3. Подключение вебхука
Привяжи бота к n8n, выполнив запрос в терминале:
curl "[https://api.telegram.org/bot](https://api.telegram.org/bot)<ТВОЙ_ТОКЕН>/setWebhook?url=<URL_ВЕБХУКА_N8N>"