В прогоне курса бот «Кодиума» прошёл путь от первого задания агенту до службы на сервере за 9 заданий. По дороге агент закрепил старые версии, забыл миграцию базы и один раз затёр файл заявок. Теперь твоя очередь, и заказчик свой: тот, кому ты писал в прошлом уроке, знакомый или выдуманный по образцу.
Чему научишься в этом уроке:
• собрать бота заявок под своего заказчика от сценария до сервера;
• проверить его вживую по чек-листу П1, включая ошибки ввода;
• сдать комплект: ссылку на бота, снимок файла заявок, README и статус службы.
Выбери заказчика
Лучше настоящий: студия, мастерская, репетитор. Если пока никого нет, возьми образец «Кодиума» и поменяй одну вещь: вместо курсов будут твои услуги. Сценарий тот же: /start, согласие, имя, телефон, выбор кнопками, уведомление владельцу и строка в файле на Яндекс Диске.
Поменял поля, поменяй и текст согласия. В прогоне первая версия согласия упоминала почту и отчество, которых бот вообще не спрашивал. Согласие должно перечислять ровно те данные, что собирает твой бот, цель и где они хранятся. Попроси агента сверить текст с полями в коде, а потом прочитай его сам.

Чек-лист П1
Иди по пунктам. Каждый пункт отмечай только после проверки в Telegram, а не после слов агента «готово».
- Сценарий записан: согласие первым шагом, какие шаги, какие кнопки, какие данные и зачем каждое (урок 2.2).
- Проект в своей папке с .venv, задание агенту с пометкой «свежие версии» (урок 2.3). Тесты проходят.
- Кнопка «Не согласен» вежливо отказывает, дальше ничего не спрашивает и ничего не сохраняет.
- Неверный телефон отбивается: проверь на 12345.
- Имя проверяется: пустое, длиннее 60 символов и начинающееся с «/» бот не принимает.
- Токен Яндекса с правами чтения и записи; вторая заявка дописывается в zayavki.xlsx, первая на месте (урок 2.4).
- База с новым полем не падает: миграция при старте. Имени и телефона в базе нет, в pending.jsonl тоже.
- Бот на сервере за рубежом, локальная копия остановлена,
systemctl status bot-kodiumпоказывает active (running) после перезагрузки, время согласия по Москве (урок 2.5). - README и инструкция владельцу готовы, токены на заказчике (урок 2.6).
Как давать задания агенту
Лучше несколько коротких заданий, чем одно огромное: в прогоне каждое занимало 3–11 минут работы агента. После каждого задания проверяй вживую. Если агент начал «чинить» обходными файлами или советует сменить версию Python, останови его и дай точную ошибку из терминала. Так было в прогоне на втором задании, и этот случай разобран в уроке 2.3.
Для сметы: весь П1 в прогоне стоил около 0,3 $ расхода модели через CloseRouter, это около 54 минут работы агента за 10 заданий. Твой расход будет другим: смотри его в кабинете CloseRouter, а не в /cost. Сервер Timeweb оплачивается отдельно, по часам.
Порядок работы на неделю
На П1 в плане курса отведены недели 3–5. Если ты дошёл до практики, удобно разбить её на четыре захода, каждый со своей живой проверкой:
- Первый заход: сценарий с согласием первым, .venv, сборка у себя, тесты, проверка «Не согласен», неверного телефона и имени.
- Второй: Яндекс Диск, две заявки подряд в файле, миграция базы, имя и телефон вне базы.
- Третий: сервер, служба, перезагрузка, время по Москве.
- Четвёртый: README, инструкция владельцу, кейс, снимки для сдачи.
Застрял на одном заходе дольше вечера? Опиши в чате курса, что видишь, что делал и какую ошибку показал терминал. Точная ошибка помогает и наставнику, и агенту, а «не работает» не помогает никому.
Перед снимками для сдачи закрой телефоны, токены и адрес сервера. Это касается и файла zayavki.xlsx: в нём настоящие данные людей, даже если заявки тестовые от знакомых.
Если не получилось
- pip падает на aiohttp или pydantic-core → агент закрепил старые версии → .venv и «свежие версии, без привязки к старым».
- «table applications has no column named consent_at» → поле добавлено в код, а база старая → попроси миграцию при старте, старые заявки не терять.
- Перезапись файла на Диске даёт 500 → у токена нет права чтения → пересоздай токен с правами чтения и записи.
- Первые заявки исчезли из zayavki.xlsx → скачивание не прошло, и бот создал файл заново → новый файл только при 404, при другой ошибке не загружать.
- Бот молчит на сервере, в журнале таймауты Telegram → регион сервера → сервер за рубежом.
- Имя вида «/startАнна» → в Telegram Web к тексту иногда приклеивается черновик → это особенность клиента, но бот всё равно должен отбить имя с «/».
- Бот на сервере отвечает через раз, в журнале Conflict → у тебя на компьютере запущена вторая копия → закрой её.
Контрольный вопрос. Агент написал «Всё готово, тесты проходят». Что сделать перед тем, как отметить пункт чек-листа?
Подсказка: Вспомни, что поймала живая проверка, а тесты пропустили.
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Контрольный вопрос. Ты отправил боту имя «/start Анна», и он его принял. Какой пункт чек-листа не выполнен?
Подсказка: Какие три вида имени бот должен отбивать?
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Контрольный вопрос. После второй тестовой заявки в zayavki.xlsx осталась одна строка, первая пропала. Что поручить агенту?
Подсказка: Вспомни, что отдаёт Диск по ссылке на скачивание и как код это понял.
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Задание. МИССИЯ «Мой бот заявок». 1. Выбери заказчика и запиши сценарий бота с согласием первым шагом. 2. Собери бота с Claude Code по чек-листу П1. 3. Сломай и почини: нажми «Не согласен», отправь неверный телефон и имя с «/». Бот должен отбить все три случая. 4. Выложи на сервер за рубежом, перезагрузи сервер и проверь, что бот поднялся. 5. Подготовь README. Принято, если: дана ссылка на бота (t.me/…), он отвечает на /start кнопками согласия; приложен снимок чата с тремя отбитыми случаями; снимок zayavki.xlsx на Диске минимум с двумя заявками (телефоны закрыты); README.md без значений токенов; снимок systemctl status bot-kodium со строкой active (running) после перезагрузки.
Подсказка: Сначала добейся рабочего бота у себя, потом переноси на сервер: так проще понять, где поломка.
✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Что дальше
П1 закрыт: у тебя есть бот, кейс и первые сообщения заказчикам. В паттерне П2 бот перестанет быть одиночкой: учимся связывать сервисы между собой, чтобы данные сами ехали из формы в таблицу и отчёт.
Итог:
• собран свой бот заявок по чек-листу П1 и проверен вживую;
• бот живёт на сервере и пережил перезагрузку;
• комплект сдачи готов: ссылка, файл заявок, README, статус службы.
← Назад · ↑ В начало урока · ⌂ В начало курса · Вперёд → П2. Интеграции
