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

Содержание

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

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

С учетом моего ТЗ, стало понятно, что стандартные способы автоматизации типа 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 не надо — надо просто брать и спрашивать у него что делать — он сам подскажет, и большинство работы сам и сделает.

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


  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. janvarev
      17.01.2025 17:58

      В принципе, Cursor подключается к сторонним OpenAI-совместимым сетям спокойно, и работает без подписки - см. https://habr.com/ru/articles/874220/#comment_27798724

      Но доступ хоть к какой-нибудь нейросети вам все равно потребуется.


      1. Lord_of_Rings
        17.01.2025 17:58

        Mistral (le chat) API подойдет?


        1. janvarev
          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

          Учитесь создавать ИИ-агентов, на ближайшее десятилетие это будет востребованное направление


  1. Per_Ardua
    17.01.2025 17:58

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


    1. Konstantinx5
      17.01.2025 17:58

      Aider хорошо заменяет агента в курсоре. Остальные фичи везде есть уже.


    1. janvarev
      17.01.2025 17:58

      Да, есть Continuе как плагин для VS Code и JetBrains, функционал имхо практически такой же.


      1. Theio
        17.01.2025 17:58

        Нет, continue это не то. В continue есть две функции - tab auto complete, как копайлот по сути, и вопросы по коду. Cursor же имеет агентские способности. Если хочется все способности курсора, то надо ставить плагин cline. Ну или aider как выше подсказали, но это скорее внешняя тулза которую можно встроить в vs code.


        1. janvarev
          17.01.2025 17:58

          В Continue изменение кода тоже есть (выделяешь и говоришь поправить нужным образом), вопросы по кодбазе есть.
          Но полноценной правки файлов и агентов вроде нет, да - но я это и в Курсоре не видел, может, просто мало копал.


  1. karmael
    17.01.2025 17:58

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


  1. gfiopl8
    17.01.2025 17:58

    Я не понял а что делает итоговый бот. Пересылает новости из каналов? Разве бот может читать сообщения и каналов где его нет?


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

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

      Честно, не знаю как это работает, но бот не присутствует ни в одном канале.

      Вот скрин из самого бота:


    1. shikhov
      17.01.2025 17:58

      Чтение и пересылка делается через Client API. Бот используется только для интерфейса.


  1. janvarev
    17.01.2025 17:58

    На всякий случай, если кому нужно - у Cursor есть возможность подключить любую нейросеть по OpenAI-совместимому API, и не привязываться к генерациям по платному тарифу.

    Т.е. можно использовать:

    • Локальные инсталляции типа Ollama с собственной сетью

    • Прокси-сервисы для нейросетей (я такой поддерживаю для Соннета, Deepseek и прочих, есть в профиле и пр.)

    Пример настройки под спойлером


    1. code_bit
      17.01.2025 17:58

      А для автокомплита только FIM модели подходят? Есть ли смысл заморачиваться если 6Гб VRAM? Пока пробовал интегрировать в ide с помощью плагина Continue модели 1.5b и 3b но по ощущениям больше мешало, отключил. Есть доступ по api к модельке побольше, но там обычная чат модель.. а что может дать ее подключение в курсор (сам курсор пока не пробовал , проигрался с аналогом windsurf)?


      1. janvarev
        17.01.2025 17:58

        Давайте отвечу по моему личному опыту:

        Тупо не стоит использовать автокомплит, вот не очень он работает. В Continue есть опция "использовать для автокомплита chat completions (т.е. чат-модель)", но опять же - опыт у меня для этого скорее негативный.

        На практике я выделяю кусок кода или просто пишу "сделай здесь такую-то фичу" через Ctrl-J (т.е. обычный чат-интферфейс или редактор с ИИ). Так - работает. А автокомплит - не очень.

        Опять же, имхо 1.5 и 3b модели рассматривать нет смысла совсем - ну просто интеллекта там мало. Я постоянно юзаю только Sonnet 3.5, и делает он почти без ошибок.


  1. gorod0k
    17.01.2025 17:58

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


    1. janvarev
      17.01.2025 17:58

      1. А что используете в качестве модели в Курсоре? Потому что Соннет 3.5 как бы делает хорошо, ну или gpt-4o полноценный.

      2. Лично я на практике, несмотря на то, что знаю и Курсор, и Continue, тоже предпочитаю работать ручками через чат, где у меня гигантский промт на 10К знаков, который описывает мой фреймворк. И отличные результаты, если честно.


  1. andyblaster
    17.01.2025 17:58

    Смутили два момента:

    поэтому можно дополнительно попросить Cursor не трогать код рабочего функционала, чтобы он не сгаллюцинировал и все не испортил

    Как быть, если исправление требует стратегического, архитектурного рефакторинга по существующим модулям? Утрированно, - по сигнатурам методов прокинуть дополнительный параметр?

    я создал слишком много запросов кода и Телеграм меня забанил. Тоже учтите этот момент и заранее спросите у Cursor как этого избежать.

    Есть еще моменты, которые нужно учесть? Что еще я могу потенциально повесить, если их не учту?

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

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

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


  1. rubikon
    17.01.2025 17:58

    Как бы мне агента написать, для сортировки файлов по контенту используя API AI и желательно чтоб Ai сам бы и написал))) куда податься