Содержание
Каждую субботу в 10:00 я провожу в Ташкенте ИИшницу. Это бизнес-завтрак про нейросети: в кафе собираются предприниматели и специалисты, я разбираю одну тему, и мы тут же пробуем её на своих задачах. Кто не может прийти, подключается в Zoom.
Вся запись идёт через Telegram-бота @iishnicabot. Он показывает тему ближайшего завтрака, принимает оплату в узбекских сумах и рублях, напоминает о встрече, присылает ссылку на Zoom, после завтрака собирает отзывы, а мне показывает, кто оплатил, кто пришёл и сколько завтрак заработал.
Недавно я хотел рассказать знакомому, как устроен этот бот, и понял, что рассказать нечем. Ни обзора, ни статьи. Поэтому собрал всё здесь: с чего начинал в январе, что ломалось, что я переделывал и почему выбрал именно такие решения. Все скриншоты сняты с копии бота на моём компьютере, имена и телефоны участников на них выдуманные.
- Запись на завтрак в кафе или в Zoom в пару нажатий, без анкет на входе.
- Оплата через Click, картой Uzcard и Humo, российской картой в рублях или наличными на входе.
- Скидка постоянным гостям, «С другом дешевле», реферальная ссылка с бонусом.
- Бесплатное участие для блогеров за сторис и рилс, с модерацией.
- Напоминания за день и утром, ссылка на Zoom только оплатившим, запись завтрака после.
- Админка прямо в Telegram: мероприятия, цены, участники, отметка посещения, рассылки, статистика выручки.
В цифрах на 8 ноября 2026 года: 16 завтраков в базе, 838 человек запускали бота, 133 из них хоть раз платили, в истории проекта 458 правок. Бот я делаю сам, с помощью Claude Code. В первые месяцы часть правок делал через ChatGPT.
Человек нажимает «Старт» и сразу видит главное меню. Никаких «введите имя и телефон» до того, как он вообще понял, куда попал.
По кнопке «Записаться на завтрак» бот показывает тему, дату, спикера, сколько осталось мест в кафе и цену. Если человек уже был у нас в кафе, он видит свою скидку постоянного гостя прямо на кнопке.
Имя и телефон бот спрашивает только в момент первой записи, и только если их ещё нет. Дальше экран оплаты: все способы на одном экране, у каждого своя цена.
Задача в январе была простая. Я запускал завтраки, и люди записывались через личку: человек пишет, я отвечаю, скидываю реквизиты, жду скриншот оплаты, вношу в табличку, накануне пишу каждому напоминание. На пяти гостях это терпимо. На двадцати я уже путался, кто оплатил, а кто только спросил цену.
Я выбрал Telegram-бота, а не сайт с формой, потому что все мои гости и так сидят в Telegram. Там же им удобно получить напоминание, ссылку на Zoom и чек. А Telegram Payments позволяет принять оплату прямо в чате, без своего сайта и без договора с банком на эквайринг.
10 января я поднял бота из своего шаблона на aiogram 3 с PostgreSQL и Redis в Docker. К 16 января он уже умел:
- записывать на завтрак в кафе или онлайн, с выбором еды и напитков;
- принимать оплату через Click в узбекских сумах и через ЮKassa в рублях;
- напоминать за день до завтрака и утром;
- просить отзыв после завтрака: текстом, голосом или видео;
- напоминать тем, кто начал запись и бросил на оплате.
Дальше за пару недель добавились наличные на входе, ссылка на Zoom только для оплативших онлайн, отметка «пришёл», баннер завтрака, правка цен и описания из админки и первая реферальная программа.
Тогда завтраки шли в ресторане по четвергам и воскресеньям, место в кафе стоило 250 000 узбекских сумов, онлайн 100 000. С 22 января по 22 февраля прошло пять завтраков, на них оплатили 10, 11, 4, 11 и 1 место. Последняя цифра всё объясняет: в конце февраля я завтраки остановил.
Курьёз из той эпохи. 26 января я убрал из текстов бота «каждый четверг», потому что завтраки переехали на другие дни. А в описании бота, которое человек видит до нажатия «Старт», фраза «каждый четверг в ресторане» провисела до октября. Заметил это, только когда настраивал рекламу в Telegram Ads.
С марта по июль завтраков не было, и бота почти никто не открывал: от одного до двенадцати новых людей в месяц. В конце апреля я попробовал зайти с другой стороны и за несколько дней собрал прототип веб-приложения для завтраков на Next.js и Supabase, со входом по ссылке на почту и своим ботом поверх той же базы. Дальше прототипа дело не пошло, и в августе я вернулся к старому боту.
18 августа я начал с того, что не видно гостям. Настроил выкладку через GitHub Actions: перед каждым обновлением бот сам делает копию базы. Если что-то сломается, откат занимает минуту, а оплаты не потеряются.
Следом обновил библиотеку под новые возможности Telegram и заменил все эмодзи в кнопках и текстах на премиальные из одного набора. Смесь обычных и премиальных эмодзи выглядела неряшливо, и меня это бесило. Стрелки «назад» и «вперёд» оставил текстом: в наборе не нашлось зеркальной пары.
22 августа прошёл первый завтрак после паузы, на новом месте, уже в Founders Cafe, и сразу 27 оплаченных мест. Под этот запуск я поменял три правила.
- Место в кафе закрепляется только оплатой в боте. Бронь «заплачу наличными» место не занимает, иначе зал заполняется людьми, которые потом не приходят. Таким гостям бот мягко предлагает доплатить картой.
- Реферальный бонус начисляется только после того, как приглашённый друг реально пришёл и его отметили на входе. Раньше бонус капал за оплату, а оплату можно отменить.
- Запись завтрака уходит защищённым видео и только тем, кто был на завтраке.
Тогда же появился нетворкинг: после оплаты человек может заполнить профиль «о себе», а по команде /networking посмотреть карточки других участников завтрака. Карточки видят только оплатившие.
Платежи заняли больше всего времени, и это главная часть кейса для тех, кто будет делать похожего бота в Узбекистане.
Сначала Click работал через Telegram Payments на мне как на самозанятом. Люди очень не доверяют, что надо вводить номер карты и срок в окошке Telegram. Поэтому таких оплат было минимум, в основном люди платили наличными на входе. В августе я перевёл приём денег на компанию и добавил кнопку-ссылку на оплату в Click: человек платит в привычном приложении, а бот узнаёт об оплате сам. Для этого у бота впервые появился свой веб-сервер, который принимает уведомления от Click.
24 августа подключил ATMOS, чтобы принимать любые карты Uzcard и Humo на одной платёжной странице. И на следующий день поймал главный сюрприз проекта. По документации деньги списываются, только когда бот подтвердит платёж. На деле я выключил подтверждение целиком, а тестовая тысяча узбекских сумов всё равно списалась.
Поэтому теперь бот не ждёт уведомления, а сам раз в несколько секунд сверяет выставленные счета с ATMOS. Уведомление осталось как быстрый путь, а сверка стала главным. Ожидание подтверждения после этого сократилось примерно с 90 до 20 секунд.
Следом пришли возвраты. Раньше отмена записи в админке только меняла статус, а деньги человеку я возвращал руками, и про это легко было забыть. Теперь при отмене есть кнопка «Отменить и вернуть деньги» для Click и ЮKassa. У каждой платёжки свой подвох: у Click ключ для возврата оказался не тем полем, которое логично ожидать, это выяснилось только на живом платеже. У ЮKassa для возвратов нужны отдельные ключи магазина, токен из Telegram не подходит. А платежи ATMOS через их платёжную страницу программно не возвращаются вовсе, только вручную в кабинете.
За всё время больше всего записей прошло бесплатно через ИИ-сообщество (155), дальше наличные (81), кнопка Click (35), ATMOS (25), ЮKassa в рублях (16) и старый счёт Click в Telegram (11).
Первая реферальная программа появилась ещё в январе: другу скидка, пригласившему бонус на баланс, потом вывод по заявке. В августе я открыл её для всех и снизил бонус до 15 000 узбекских сумов. Люди ею пользуются, но в октябре я признался себе, что схема запутанная. Хотелось сказать проще: если идёте один, место стоит 150 000 узбекских сумов, а вдвоём 260 000 за двоих.
Так 17 октября появилось «С другом дешевле». Человек оплачивает сразу два места, бот присылает ему билет, он пересылает билет другу, друг нажимает кнопку, вводит имя и телефон, и место за ним. Я отдельно просил сделать так, чтобы это понял даже тот, кто в Telegram плохо разбирается.
Скидка постоянным гостям работает с конца сентября: кто уже был у нас в кафе, платит меньше. Скидки не складываются, применяется большая. А 23 октября все скидки и цену за двоих я перенёс прямо в создание завтрака: раньше после каждого создания приходилось лезть в админку и вбивать их руками.
Чтобы понимать, откуда приходят люди, у каждой рекламы своя ссылка на бота с меткой. Бот запоминает метку при первом запуске, а если человек потом пришёл по другой ссылке, засчитывается последняя. Закуп рекламы в каналах я веду через своего бота-закупщика, и ИИшница сообщает ему о каждой брони. Так видно, сколько стоил один гость с конкретного канала.
Цифры получились наглядные. Первое размещение в канале релокантов дало 44 перехода и 12 оплат. Другое сообщество дало 15 переходов и ни одной оплаты. А в октябре я попробовал официальную рекламу Telegram: потратил около 2500 рублей, получил три запуска бота и ни одной записи. Люди открывали профиль бота и уходили, не нажав «Старт». После этого на экране до старта появилось анимированное видео о завтраке.
Главный вывод из разбора базы в конце октября: число гостей сильнее всего зависит от свежей рекламы, а не от темы. В недели с закупом приходило 76-87 новых людей, без закупа от 2 до 19.
В октябре я стал приглашать блогеров по бартеру: бесплатный завтрак за публикацию. Блогер подаёт заявку кнопкой «Я блогер», я одобряю вручную, он выкладывает сторис и присылает скриншот, бот засчитывает запись. Мест для блогеров на каждый завтрак ограниченное число, их задаю в админке.
Через месяц выяснилось, что сторис выкладывают, а про рилс после завтрака забывают. Поэтому 8 ноября перед заявкой появился экран условий с кнопкой «Принимаю условия»: сторис до завтрака и рилс после, одной сторис мало.
После одного из августовских завтраков гости спросили, можно ли учиться у меня дальше. Так в боте появились офферы: участникам завтрака курс по нейромонтажу со скидкой, оплата через Click или ATMOS, после оплаты бот сразу выдаёт одноразовую ссылку в закрытый канал с уроками.
С конца сентября участники моего ИИ-сообщества подключаются к завтракам онлайн бесплатно: бот сам проверяет, состоит ли человек в чате сообщества. Кафе для всех платное. В октябре в бота добавилась подписка на клуб ИИнкубатор, она даёт бесплатное место и в кафе. Бесплатных онлайн-записей стало по 10-15 в день, и 7 ноября я выключил себе уведомления о них: выручки они не приносят, а телефон пищал постоянно.
Ещё одна мелочь, которая экономит мне минуты на каждом завтраке. Раньше материалы презентации я рассылал через админку, долго тыкая кнопки. Теперь в презентации есть кнопка, она открывает бота по специальной ссылке, и бот сам отправляет материалы всем, кто пришёл в кафе и подключился онлайн.
К концу октября функций стало много, и гости начали путаться. Я сел и прошёл бота глазами нового человека, плюс посмотрел базу. Нашлись три системные проблемы.
- Передумать было нельзя. Кнопка «Отменить» писала «Регистрация отменена», а бронь оставалась в базе. За всё время накопилось 76 неоплаченных записей.
- Бот не отвечал на простой вопрос «я иду или нет?». Раздела с моими записями в меню не было, и человек ходил по кругу через экран оплаты.
- Скрытые режимы ввода съедали сообщения. Например, человек оплатил и написал что-то в чат, а бот записал это в его профиль «о себе».
28 октября всё это переделал. У бота теперь одно главное меню, раздел «Мои записи», честная отмена неоплаченной брони, смена формата «лучше в Zoom» или «лучше в кафе» с понятной ценой и ответ на любой свободный текст. Заодно договорился с собой о словаре: «запись», а не «регистрация» и не «бронь».
Отдельной веб-админки у бота нет, всё управление тоже в Telegram, по команде /admin. Мне так проще: телефон всегда в руке, а завтрак я веду не за компьютером.
2 ноября в Telegram появились сообщения ботов с таблицами, заголовками и сворачиваемыми блоками. Я сразу перевёл на них админку. Первая попытка выглядела так: с компьютера симпатично, а с телефона просто капец. Пришлось подбирать, что нормально читается на айфоне: без больших заголовков, таблицы только там, где столбцов немного. Пользовательские экраны я оставил обычными сообщениями.
Отметку посещения на входе ведёт моя жена. Приходят люди с одинаковыми именами, и раньше мы их путали. Теперь на отдельном экране офлайн-гости идут по алфавиту, рядом последние цифры телефона и сумма, если человек платит наличными на входе.
Ещё в октябре я понял, что не могу посчитать, окупился ли завтрак. Так появилась статистика: выручка по каждому завтраку, расходы статьями и итог. Рубли считаются отдельной строкой, чтобы не смешивать валюты.
- Сначала запись, оплата и напоминания. Всё остальное я добавлял, когда упирался в конкретную боль, и почти каждая функция в этой статье появилась после фразы «меня это бесит» или «я опять делаю это руками».
- Платёжным системам нельзя верить на слово. Каждый способ оплаты я проверял живым платежом на маленькую сумму, и почти каждый раз находилось расхождение с документацией.
- Место в зале должно закрепляться деньгами. Бесплатная бронь собирает людей, которые не приходят.
- Метка на каждой ссылке окупается с первого же размещения: сразу видно, какой канал приводит гостей, а какой только переходы.
- Раз в пару месяцев полезно пройти бота глазами нового человека. Я сам привыкаю к своим экранам и перестаю видеть, где путаются гости.
- Копия базы перед каждым обновлением и выкладка одной кнопкой. Без этого я бы боялся трогать бота накануне завтрака.
Если вы проводите встречи, мастер-классы или курсы и пока принимаете записи в личке, начните с малого. Опишите путь гостя словами: где он узнаёт о встрече, что видит после «Старт», как платит, что получает после оплаты и за день до встречи. Это и есть техническое задание.
Первую версию с записью, оплатой через Telegram Payments и напоминаниями реально собрать за неделю, даже без опыта программирования. Я собираю такие вещи в Claude Code, как это начать, разбираю в статье про установку Claude Code, а сам подход описан в статье что такое вайбкодинг.
Не делайте сразу админку, рефералку и блогеров. Проведите три встречи на простой версии, посмотрите, где вы до сих пор что-то делаете руками, и автоматизируйте именно это. А если хотите посмотреть на бота вживую, приходите на ближайшую ИИшницу.
Частые вопросы
Первая версия с записью, оплатой и напоминаниями заработала за неделю, с 10 по 16 января 2026 года. Нынешний бот вырос за 10 месяцев работы по вечерам и выходным, в его истории 458 правок.
На Python и библиотеке aiogram 3, данные в PostgreSQL, состояния диалогов в Redis, напоминания по расписанию через APScheduler. Всё работает в Docker на одном сервере и обновляется через GitHub Actions.
Быстрее всего подключить Click через Telegram Payments, но вводить номер карты в окошке Telegram люди не любят. Лучше сразу сделать кнопку оплаты в приложении Click с уведомлениями на свой сервер и ATMOS для карт Uzcard и Humo. Рубли удобно принимать через ЮKassa в Telegram Payments, а наличные на входе тоже стоит учитывать в боте.
Простую версию да: запись, оплата, напоминания и рассылка. Я собираю бота с помощью Claude Code, но платежи и возвраты всегда проверяю живыми платежами на маленькие суммы. Там ошибка стоит денег.
Гости и так сидят в Telegram. Там им удобно получить напоминание, ссылку на Zoom и материалы после встречи, а оплата проходит прямо в чате. Весной я пробовал сделать веб-приложение для завтраков, но вернулся к боту.
