Как я писала своего бота, не зная Python
Привет, меня зовут Саша, и я продуктовый дизайнер. В силу специфики своей работы я часто и много контактирую с разработчиками, обсуждаю с ними технические вопросы, наблюдаю за их процессом написания кода. Мне эта тема всегда казалась очень интересной, но не хватало усидчивости, чтобы освоить какой-либо язык программирования до конца. Я неплохо знаю HTML/CSS, поверхностно JS и могу отличить Python от змеи.
С таким уровнем знаний создать что-то классное и рабочее практически нереально, но очень хотелось. Поэтому я решила проверить, насколько далеко смогу зайти без серьёзных денежных вложений, совсем не зная программирования, и используя только ИИ-инструменты.
---
Идея и начало работы
Идея создать Таро-бота пришла, когда я задумалась, как объединить свою любовь к мистике с технологиями. Единственное, что я знала о ботах, — их пишут на Python, а для создания используют специального бота в Telegram. С этим запросом я и обратилась к ИИ. Он выдал готовый код простого бота и инструкцию о том, как этот файл создать, запустить и проверить работоспособность бота в Telegram.
«Супер!» — подумала я и скормила ИИ сценарий своего бота. Суть была в следующем: пользователь пишет боту вопрос, бот раскладывает его на три подвопроса, вытягивает случайную карту на каждый и даёт интерпретацию в контексте вопроса. Через пару уточняющих запросов у меня оказался готовый рабочий код бота, который приветствовал пользователя, принимал его вопрос и подключался к OpenAI для генерации подвопросов и интерпретации карт.
ИИ любезно отвечал даже на мои самые глупые вопросы — от того, как запустить бота, до команды для вызова терминала на компьютере.
Пришло время проверять бота, и тут начались первые сложности: то не хватало нужных библиотек, то возникали какие-то ошибки, то логика бота меня не совсем устраивала. Приходилось скармливать ИИ каждую ошибку и просить исправить. Забегая вперёд, скажу, что это был самый нудный этап всей работы. Но через какое-то время ошибки закончились, а бот успешно запускался в Telegram, выполняя задуманное.
На этом этапе я поняла: всё кажется сложным, пока ты не начнёшь действовать. Бот умел приветствовать пользователей, обрабатывать их вопросы, генерировать подвопросы, возвращать значения карт и даже отправлять изображения карт Таро. Для хранения информации о пользователях мы добавили базу данных SQLite. Казалось, всё работает… пока я не решила внедрить систему оплаты.
---
Интеграция платежей: на грани отчаяния
Изначально я планировала подключить оплату через классического провайдера, чтобы деньги поступали сразу на карту. Но отказалась от этого варианта из-за бюрократии: требовались договоры, передача данных в налоговую и, возможно, продажа души дьяволу. Поэтому я выбрала вариант оплаты через внутреннюю валюту Telegram — Звёзды.
Я нашла инструкцию о подключении этого типа оплаты к боту, скормила её ИИ и попросила сделать то же самое в моём коде. Первой проблемой стало то, что ИИ не воспринимал звёзды как реальную валюту и упорно подставлял рубли. Приходилось генерировать код, а потом вручную менять параметры в инвойсе. Через несколько итераций и исправлений ошибок бот наконец-то предлагал кнопку оплаты… но не создавал инвойс.
Руки начали опускаться, но я продолжала.
Ещё через несколько часов бот уже принимал оплату звёздами, но продолжал делать бесплатные расклады. Пришлось тщательно прорабатывать логику:
- Отслеживать, какие расклады уже использованы.
- После оплаты автоматически разблокировать следующий расклад.
- Исключить ошибки в последовательности запросов.
Сначала возникли круговые импорты — когда один модуль вызывал другой, создавая путаницу. Решение нашлось в разделении кода на модули: обработку базы данных вынесли в отдельный файл, разграничили функции для работы с оплатами и раскладами.
Чем глубже я погружалась в проект, тем яснее становилось: ошибки — это неизбежная часть пути.
То бот пытался получить несуществующую колонку и требовалось добавили миграции, чтобы автоматически обновлять таблицы без удаления данных.
Иногда бот "забывал", что расклад оплачен, поэтому пришлось добавить флаги: был ли расклад использован или куплен.
---
Перенос бота на сервер
Когда код бота заработал на компьютере, его нужно было перенести на сервер, чтобы он работал 24/7. Здесь мне снова помогла статья с Хабра.
На сервере возникали уже знакомые ошибки: не хватало библиотек или функций в коде, но все исправлялось проверенным способом.
Копирую ошибку из консоли → Прошу ИИ её исправить и вернуть новый код → stonks
Самым неудобным было то, что ИИ выдавал куски кода, которые я не всегда знала, куда подставить. Поэтому почти на каждое исправление я запрашивала весь код бота целиком. Да, это замедляло процесс, но предотвращало новые ошибки.
---
Вместо заключения
Теперь бот работает стабильно. Пользователи могут задать вопрос, получить расклад, оплатить следующий и снова обратиться к Таро, а я горжусь, что смогла реализовать проект с минимальными знаниями программирования.
Если хотите проверить сами — вот ссылка на бота: @tarogg_bot. А я пошла готовить второй релиз своего бота, с реферальной системой и бонусами за приглашение друзей.
Пожелайте мне удачи!
---
А что по затратам? Я закинула $10 на API chatGPT, ~$7 за месяц пользования виртуальным сервером и с интересом провела около 40 часов своего времени. Мне понравилось!