Создать простого Telegram-бота, который: Принимает фото еды. Спрашивает название блюда. Записывает данные в Google-таблицу. Позволяет вручную отправить самочувствие утром. Хранит всё в одном листе.
Функционал: 1. Обработка фотографий Пользователь отправляет фото. Бот отвечает: “Какое это блюдо? Напиши название.” Пользователь пишет название текста. Бот сохраняет в таблицу: | timestamp | user_id | username | dish_name | photo_url | source | photo_url — ссылка Telegram (file_path), фото скачивать НЕ нужно.
Если пользователь отправил одно и то же фото (по file_unique_id), бот пишет: “Это фото уже есть в базе. Добавить повторно? (Да/Нет)”
2. Обработка текстового ввода Если пользователь сразу пишет название блюда (без фото): Бот спрашивает: “Сколько грамм/порция?” Записывает в таблицу: | timestamp | user_id | username | dish_name | weight | photo_url = “” | source = “text” | 3. Самочувствие утром (вручную) Команда: /mood
Бот отправляет вопрос: "Как самочувствие сегодня по шкале от 1 до 10?" Пользователь пишет число → запись сохраняется в таблицу: | timestamp | user_id | username | mood | (записывается на тот же лист) 4. Команда просмотра за сегодня Команда: /day
Бот отображает список сегодняшних записей в тексте: Формат: 1) 12:41 — картошка с мясом 2) 14:57 — салат овощной 3) 19:10 — mood: 7/10
5. Команда помощи /help
Текст: Отправьте фото — я спрошу название блюда и запишу в таблицу. Команда /mood — отправить самочувствие за день. Команда /day — посмотреть записи за сегодня.
Бот должен корректно работать у 5 параллельных пользователей Скорость записи: до 2–3 вставок/сек
Хостинг: PythonAnywhere / Render / Railway (любой бесплатный) Вы настраиваете хостинг самостоятельно
Требования к качеству Бот должен работать стабильно. Код должен быть структурирован, без хаоса.
Должна быть инструкция: Как изменить таблицу Как изменить токен бота Как перезапустить бота Логи ошибок должны выводиться в консоль.
Критерии сдачи Фото → название → запись /mood работает /day выводит данные Фото НЕ скачиваются Повторные фото определяются (file_unique_id) Один лист в таблице Инструкция + короткое видео (скринкаст)