Как я писала своего бота, не зная Python

Привет, меня зовут Саша, и я продуктовый дизайнер. В силу специфики своей работы я часто и много контактирую с разработчиками, обсуждаю с ними технические вопросы, наблюдаю за их процессом написания кода. Мне эта тема всегда казалась очень интересной, но не хватало усидчивости, чтобы освоить какой-либо язык программирования до конца. Я неплохо знаю HTML/CSS, поверхностно JS и могу отличить Python от змеи.

С таким уровнем знаний создать что-то классное и рабочее практически нереально, но очень хотелось. Поэтому я решила проверить, насколько далеко смогу зайти без серьёзных денежных вложений, совсем не зная программирования, и используя только ИИ-инструменты.

спойлер: всё получилось
спойлер: всё получилось

---

Идея и начало работы

Идея создать Таро-бота пришла, когда я задумалась, как объединить свою любовь к мистике с технологиями. Единственное, что я знала о ботах, — их пишут на Python, а для создания используют специального бота в Telegram. С этим запросом я и обратилась к ИИ. Он выдал готовый код простого бота и инструкцию о том, как этот файл создать, запустить и проверить работоспособность бота в Telegram.

«Супер!» — подумала я и скормила ИИ сценарий своего бота. Суть была в следующем: пользователь пишет боту вопрос, бот раскладывает его на три подвопроса, вытягивает случайную карту на каждый и даёт интерпретацию в контексте вопроса. Через пару уточняющих запросов у меня оказался готовый рабочий код бота, который приветствовал пользователя, принимал его вопрос и подключался к OpenAI для генерации подвопросов и интерпретации карт.

ИИ любезно отвечал даже на мои самые глупые вопросы — от того, как запустить бота, до команды для вызова терминала на компьютере.

Как я писала своего бота, не зная Python

Пришло время проверять бота, и тут начались первые сложности: то не хватало нужных библиотек, то возникали какие-то ошибки, то логика бота меня не совсем устраивала. Приходилось скармливать ИИ каждую ошибку и просить исправить. Забегая вперёд, скажу, что это был самый нудный этап всей работы. Но через какое-то время ошибки закончились, а бот успешно запускался в Telegram, выполняя задуманное.

На этом этапе я поняла: всё кажется сложным, пока ты не начнёшь действовать. Бот умел приветствовать пользователей, обрабатывать их вопросы, генерировать подвопросы, возвращать значения карт и даже отправлять изображения карт Таро. Для хранения информации о пользователях мы добавили базу данных SQLite. Казалось, всё работает… пока я не решила внедрить систему оплаты.

Как я писала своего бота, не зная Python

---

Интеграция платежей: на грани отчаяния

Изначально я планировала подключить оплату через классического провайдера, чтобы деньги поступали сразу на карту. Но отказалась от этого варианта из-за бюрократии: требовались договоры, передача данных в налоговую и, возможно, продажа души дьяволу. Поэтому я выбрала вариант оплаты через внутреннюю валюту Telegram — Звёзды.

Я нашла инструкцию о подключении этого типа оплаты к боту, скормила её ИИ и попросила сделать то же самое в моём коде. Первой проблемой стало то, что ИИ не воспринимал звёзды как реальную валюту и упорно подставлял рубли. Приходилось генерировать код, а потом вручную менять параметры в инвойсе. Через несколько итераций и исправлений ошибок бот наконец-то предлагал кнопку оплаты… но не создавал инвойс.

Как я писала своего бота, не зная Python

Руки начали опускаться, но я продолжала.

Ещё через несколько часов бот уже принимал оплату звёздами, но продолжал делать бесплатные расклады. Пришлось тщательно прорабатывать логику:

  • Отслеживать, какие расклады уже использованы.
  • После оплаты автоматически разблокировать следующий расклад.
  • Исключить ошибки в последовательности запросов.

Сначала возникли круговые импорты — когда один модуль вызывал другой, создавая путаницу. Решение нашлось в разделении кода на модули: обработку базы данных вынесли в отдельный файл, разграничили функции для работы с оплатами и раскладами.

Чем глубже я погружалась в проект, тем яснее становилось: ошибки — это неизбежная часть пути.

То бот пытался получить несуществующую колонку и требовалось добавили миграции, чтобы автоматически обновлять таблицы без удаления данных.

Иногда бот "забывал", что расклад оплачен, поэтому пришлось добавить флаги: был ли расклад использован или куплен.

---

Перенос бота на сервер

Когда код бота заработал на компьютере, его нужно было перенести на сервер, чтобы он работал 24/7. Здесь мне снова помогла статья с Хабра.

На сервере возникали уже знакомые ошибки: не хватало библиотек или функций в коде, но все исправлялось проверенным способом.

Копирую ошибку из консоли → Прошу ИИ её исправить и вернуть новый код → stonks

Самым неудобным было то, что ИИ выдавал куски кода, которые я не всегда знала, куда подставить. Поэтому почти на каждое исправление я запрашивала весь код бота целиком. Да, это замедляло процесс, но предотвращало новые ошибки.

Как я писала своего бота, не зная Python

---

Вместо заключения

Теперь бот работает стабильно. Пользователи могут задать вопрос, получить расклад, оплатить следующий и снова обратиться к Таро, а я горжусь, что смогла реализовать проект с минимальными знаниями программирования.

Если хотите проверить сами — вот ссылка на бота: @tarogg_bot. А я пошла готовить второй релиз своего бота, с реферальной системой и бонусами за приглашение друзей.

Пожелайте мне удачи!

---

А что по затратам? Я закинула $10 на API chatGPT, ~$7 за месяц пользования виртуальным сервером и с интересом провела около 40 часов своего времени. Мне понравилось!

1111
2 комментария

какие промпты для чатжпт? или как его получилось настроить?

Ответить

В начальный промт добавляла по шагам желаемый алгоритм бота:

«Напиши код для телеграмм бота, который будет иметь следующую логику:
- пользователь запускает бот
- бот предлагает пользователю задать вопрос
- пользователь задаёт вопрос, тот разбивает его на 3 подвопроса»
И далее

На это он выдает основной код и далее уже я мини запросами правила основной код. Например, добавь условие, что расклад можно получить только один раз в день и он выдает код с исправлениями.

Из основного еще надо сразу указывать чтобы он использовал aiogram x3, иначе постоянно будут сыпаться ошибки при запуске бота.

Ну а далее я запускала код, смотрела какие ошибки, копировала ошибки, кормила ии и это был бесконечный цикл до победного конца 😄

1
Ответить