diff --git a/src/pages/SettingsPage.tsx b/src/pages/SettingsPage.tsx index a45b421..a5ed24f 100644 --- a/src/pages/SettingsPage.tsx +++ b/src/pages/SettingsPage.tsx @@ -1,5 +1,5 @@ import { useState } from 'react' -import { Save, Building2, Bell, Shield, Globe, CreditCard, BedDouble, Mail, MessageSquare, Users, Plus, X as XIcon } from 'lucide-react' +import { Save, Building2, Bell, Shield, Globe, CreditCard, BedDouble, Mail, MessageSquare, Users, Plus, X as XIcon, Send, CheckCircle2, Copy } from 'lucide-react' import { MOCK_HOTELS } from '../data/mockData' import { cn, PLAN_COLORS, PLAN_LABELS } from '../lib/utils' import { Badge } from '../components/ui/Badge' @@ -80,6 +80,42 @@ export function SettingsPage() { const [smsApiKey, setSmsApiKey] = useState('') const [smsSender, setSmsSender] = useState('') + // Telegram settings + const [tgBotToken, setTgBotToken] = useState('') + const [tgManagers, setTgManagers] = useState<{ id: string; name: string; chatId: string }[]>([]) + const [newTgName, setNewTgName] = useState('') + const [newTgChatId, setNewTgChatId] = useState('') + const [tgEvents, setTgEvents] = useState({ + newBooking: true, + cancellation: true, + checkIn: true, + checkOut: false, + channelError: true, + payment: false, + }) + const [tgTestSent, setTgTestSent] = useState(false) + const [copiedToken, setCopiedToken] = useState(false) + + const tgBotConfigured = tgBotToken.length > 10 + + const addTgManager = () => { + if (!newTgName.trim() || !newTgChatId.trim()) return + setTgManagers(prev => [...prev, { id: `tg-${Date.now()}`, name: newTgName.trim(), chatId: newTgChatId.trim() }]) + setNewTgName('') + setNewTgChatId('') + } + + const sendTgTest = () => { + setTgTestSent(true) + setTimeout(() => setTgTestSent(false), 3000) + } + + const copyBotLink = () => { + navigator.clipboard.writeText('https://t.me/HotelSyncBot?start=connect') + setCopiedToken(true) + setTimeout(() => setCopiedToken(false), 2000) + } + const handleSave = () => { setSaved(true) setTimeout(() => setSaved(false), 2000) @@ -436,6 +472,150 @@ export function SettingsPage() { + {/* Telegram */} +
+ Менеджеры получают уведомления о бронированиях прямо в Telegram. Каждый менеджер должен написать боту команду /start и сообщить свой Chat ID.
+
Как подключить менеджера:
+/start — бот ответит его Chat IDУведомлять о событиях:
++ Менеджеры — получатели уведомлений + {tgManagers.length > 0 && ({tgManagers.length})} +
++ Менеджеры ещё не добавлены +
+ )} + {tgManagers.map(m => ( +{m.name}
+Chat ID: {m.chatId}
+