Дисклеймер: я полный ноль в разработке, поэтому этот гайд написан для таких же нулей — заранее извиняюсь перед знатоками за фактические и терминологические ошибки. И еще, другие способы создания ботов я не исследовал, поэтому если знаете более простой и изящный — напишите о нем в комментариях.

Содержание

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

Возможное решение: Дуров, верни стену ленту! Да, мне нужна лента новостей/постов в телеграме, вот такой я странный. И в идеале, чтобы ленты были разбиты по категориям. И в идеале, чтобы это работало автоматически при создании новой папки и добавлении туда каналов — то есть папки это и есть категории, по которым мне нужна лента.

С учетом моего ТЗ, стало понятно, что стандартные способы автоматизации типа IFFTS не подойдут, а существующие боты (наверняка они уже есть) мне искать лень. Поэтому я решил сделать бота сам.

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

Cursor AI по сути похож на GitHub Copilot, то есть это такой помощник при написании кода, только у Cursor свой собственный текстовый редактор и он не просто помогает, а пишет код с нуля по твоему запросу и потом исправляет ошибки (свои же) и дополняет код новыми функциями. Основное преимущество Cursor перед другим No-code AI инструментами в том, что этот код в конце концов принадлежит тебе, хранится локально и ты можешь делать с ним что хочешь — при регистрации даже можно попросить Cursor не анализировать код для обучения модели.

Шаг 1. Установка и регистрация

Скачиваем Cursor с официального сайта. Регистрируемся с любой почты и получаем 14 дней тестового периода на Pro аккаунте. Он дает 250 генераций на Claude, после чего можно пользоваться «медленными» gpt4-mini и cursor-small (хотя по факту результат примерно такой же, но Cursor заточен именно на Claude). Чтобы оценить объем доступных генераций — на этот бот ушло где-то 50.

Когда заканчивается тестовый период, можно регистрироваться с новой почты сколько угодно раз. Но у меня Pro аккаунт с новой почты заканчивается уже на следующий день — видимо смотрят по IP, поэтому возможно с включенным VPN будет работать все 14 дней, не проверял.

Ну или обновляемся до Pro версии за $20 в мес.

Шаг 2. Готовимся к первому промту

Чтобы Cusror с первого промта сработал эффективнее, лучше сразу показать ему файлы и ссылки, на которые он должен ориентироваться. В нашем случае, это документация Telegram. Добавляем ссылку на документацию и лишний раз напоминаем, что надо смотреть на код, который он уже написал — через ввод контекста @Codebase

Я о таком подходе узнал уже после того, как сделал этого бота. В этот раз я просто дал ему ссылку на документацию в первом промте. Но в других проектах использую этот подход — Cursor меньше ошибается и галлюцинирует.

Шаг 3. Пишем первый промт

Так как второй шаг я не выполнял, я просто сразу написал ему что я хочу сделать:

И соглашаемся со всем, что он написал и создал, нажав на Accept. Также обращаем внимание на то, что он сразу предложил скачать расширение Python — скачиваем и устанавливаем его.

Cursor также попросил нас создать бот через @BotFather в Телеграме и получить API_ID и API_HASH. Как их получить, я естественно не знаю, поэтому спрашиваем:

И получаем подробную инструкцию:

Дальше пробуем установить зависимости в терминале, как он и предложил, но сталкиваемся с первой ошибкой, которую Cursor сразу предлагает решить установкой еще одного расширения.

Пробуем еще раз, и снова ошибка. Просто копируем ее и вставляем в запрос.

Cursor предлагает несколько вариантов решений. Пробуем по очереди, один из них сработал.

Теперь мы готовы тестировать первую версию бота.

Шаг 4. Тестируем


Спрашиваем у Cursor как запустить бота:

Принимаем все исправления и пытаемся запустить бота через команду python3 bot.py

Ну и если бы я что-то тогда понимал, я сразу бы понял, что это не сработает, потому что файла bot.py у нас нет:)

Поэтому после получения ошибки, Cursor исправляет это и переименовывает основной файл.

И наконец, бот запустился.

Шаг 5. Исправляем ошибки

Открываем нашего бота в Телеграме и понимаем, что ничего не работает. Так и пишем:

И так 4 и 5 шаг по кругу, пока бот не выдаст хоть какой-то результат. Это самая долгая фаза в создании продукта в Cursor, потому что ошибается он часто и иногда делает очень глупые ошибки, несмотря на подсовывание ему документации. Поэтому надо быть готовым бесконечно долго отправлять ему логи ошибок, исправлять (как он думает) код и повторять это снова и снова, пока наконец оно не заработает.

И вуаля, бот заработал. Он создал каналы по моим папкам:

Шаг 6. Добавляем весь функционал

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

Но тут лучше придерживаться правила «работает — не трогай», поэтому можно дополнительно попросить Cursor не трогать код рабочего функционала, чтобы он не сгаллюцинировал и все не испортил

Шаг 7. Деплой

После того, как мы локально проверили что все функции бота работают как мы хотим, его нужно выпустить в свет. Иначе, работоспособность бота будет зависеть от работоспособности вашего компьютера.

Так как я до этого ни разу ничего сам не деплоил, так и спрашиваем у Cursor:

После нескольких подходов остановился на Railway, потому что там можно зарегистрироваться из РФ (в отличие от Heroku) и практически бесплатен. Они кладут 5 баксов на счет, и за неделю использования бота списалось только 40 центов.

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

Кстати, я хотел сделать авторизацию по номеру телефона (как в других тг-ботах), но в финальной версии пришлось остановиться на авторизации по QR, потому что по ходу бесконечных тестов, я создал слишком много запросов кода и Телеграм меня забанил. Тоже учтите этот момент и заранее спросите у Cursor как этого избежать.

Вот и все!

Когда мы запустили стабильный деплой и все функции работают как надо (ну или почти), можно сказать, что проект выполнен.

Бот создает каналы по нужным мне папкам (выбирается в самом боте) и пересылает туда сообщения из каналов, которые находятся в этих папках. После этого можно спокойно переименовывать каналы и менять им фотографию.

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

Кстати, для автоматического деплоя также нужна интеграция с GitHub, поэтому Cursor любезно все настроил и подготовил проект, включая инструкции по подключению. Поэтому если вам просто нужен такой же бот, скопируйте его и запустите по инструкции.

https://github.com/mikhailmurzak/tg-smart-folders-bot

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

Спасибо, что прочитали до конца! Надеюсь, кому-то это оказалось полезным, а главное показало, что как-то специально готовиться к разработке с Cursor не надо — надо просто брать и спрашивать у него что делать — он сам подскажет, и большинство работы сам и сделает.

Комментарии (8)


  1. achekalin
    17.01.2025 17:58

    Большое спасибо за рассказ!

    Интересно, а можно в процессе переключаться чежду разными LLM? Ну, глупый мелкий вопрос отдать в chatgpt, а сложный - в запрос из тратящегося пула?

    Локальную llm можно приделать?

    Ссылку на доку отпрвить если, он яитает все в пределах сайта документации, или одну страницу?


    1. mikhailmurzak Автор
      17.01.2025 17:58

      Да, переключаться можно, в Cursor есть такая настройка:

      А документацию также в настройках можно отдельно добавить, и видно что индексируется полностью:



  1. Lord_of_Rings
    17.01.2025 17:58

    Без VPN работает? Без тестового периода и без про юзать можно (как в codeium)?


    1. Akuma
      17.01.2025 17:58

      Без впн работает. Быстрее и удобнее кодеиума.

      Но вот без подписки у меня вообще отказался что-то делать.


  1. kanasero
    17.01.2025 17:58

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

    К сожалению, это пока похоже на "метод тыка" с непредсказуемым итогом. То, что у вас вышел в финале рабочий продукт (хотя и не совсем, все же с багами) — это фактор везения + несложность задачи. Именно поэтому пока в реальной разработке такой подход использовать неэффективно. Пока максимум, как я использую все эти gpt-шки, скорее как дополнительную альтернативу stackoverflow для решения отдельных проблемных вопросов.

    Возможно, со временем эффективность улучшится, но пока с этими кодо-генераторами времени тратишь не меньше, чем при самостоятельной разработке.

    Другое дело, если не достаточно навыков программирования, но в этом случае все равно мне кажется сложновато с самим кодо-генератором взаимодействовать, указывать ошибки, тестировать. Да и вероятность успешного итога все равно не 100% и даже не 90%, а ближе к 50/50.


    1. mikhailmurzak Автор
      17.01.2025 17:58

      Думаю, в профессиональных руках ошибок было бы меньше, потому что запросы бы подавались более подробно и точечно.

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

      Следующим проектом, который я сделал в Cursor стало iOS приложение на Swift, с которым он тоже справился. Уже намного дольше, но справился.

      Но это все пока только для личных проектов подходит. В реальных продуктах бы не рискнул использовать из-за его галлюцинаций.


      1. Rive
        17.01.2025 17:58

        Это просто программирование копипастой в стиле stack overflow, которая в этой итерации стала более адаптивной. Если человек не понимает, что он хочет вообще получить (и следовательно, как тестировать результаты), чат-бот с кодогенератором для него малополезен.

        Впрочем, я думаю что с такими усилившимися помощниками я нескоро работу найду. Живые люди становятся всё более бесполезными. :<


  1. Per_Ardua
    17.01.2025 17:58

    Курсор хорош как продукт, особенно для тех, кто умеет работать с нейросетями. Но если ты не только промпт-инженер, но и, в первую очередь, разработчик, то куда проще и дешевле настроить под себя все необходимые инструменты в своей текущей ide. Весь функционал курсора, конечно, не заменить в адекватные сроки, но то, что используется больше всего уже реализовано в тех или иных расширениях/инструментах.