Telegram Bot + Mini App for city walking quests. - React 19 + TypeScript + Vite 6 frontend - Express 5 + PostgreSQL backend - grammY Telegram bot with DeepSeek AI - GitLab CI/CD: lint, build, deploy to production Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
41 lines
917 B
TypeScript
41 lines
917 B
TypeScript
import type { Context, SessionFlavor } from 'grammy'
|
|
import type { ConversationFlavor } from '@grammyjs/conversations'
|
|
|
|
export interface SessionData {
|
|
conversationState: 'idle' | 'onboarding' | 'quest_active' | 'waiting_confirmation'
|
|
userId?: string // DB user ID
|
|
|
|
onboarding?: {
|
|
cityId?: string
|
|
cityName?: string
|
|
days?: number
|
|
companions?: 'solo' | 'couple' | 'family' | 'friends'
|
|
pace?: 'slow' | 'normal' | 'active'
|
|
comment?: string
|
|
step: number
|
|
}
|
|
|
|
activeQuestId?: string
|
|
activePointId?: string
|
|
}
|
|
|
|
export type BotContext = ConversationFlavor<Context & SessionFlavor<SessionData>>
|
|
|
|
export interface QuestPlan {
|
|
title: string
|
|
description: string
|
|
dayThemes: string[]
|
|
}
|
|
|
|
export interface GeneratedPoint {
|
|
title: string
|
|
teaserText: string
|
|
locationLat: number
|
|
locationLon: number
|
|
isLastPointOfDay: boolean
|
|
}
|
|
|
|
export interface PointContent {
|
|
contentText: string
|
|
}
|