Как я телеграм-бота с помощью ChatGPT писал

Если вкратце, то я собрал бота для просмотра фильмов и сериалов с помощью ChatGPT и выложил на GitHub. Эта статейка будет посвящена моей недельной истории (четырехмесячной давности, хе-хе) о том, как я превозмогал над своим гуманитарным умом и пытался сделать что-то интересное. Начну издалека.

Вводные

В начале лета 2024 мы с моим хорошим другом завели телеграм-канал, где рассказывали о фильмах и сериалах, да и об искусстве в целом. Канал маломальски мы рекламировали, развивали и так далее. Так продолжалось всё лето, а неделю назад, где-то в начале сентября, мне пришла идея: а почему бы не собрать простенького телеграм-бота, в котором можно будет смотреть фильмы и сериалы?

Как я телеграм-бота с помощью ChatGPT писал

Казалось просто — кнопка поиска, плеер, и полетели. Но всё оказалось гораздо сложнее. Дело в том, что я не программист. Но в айти-тусовке я косвенно кручусь уже давно.

У меня за плечами жиденькое "образование" геймдизайнера (гикбрейнс), невероятная страсть к технологиям и гиковская натура, так ещё и наряду с тем, что я сам по себе человек-сканер. Вот как-то так и загорелось. Ну и сел я, значит, работать.

Естественно, учить язык с нуля (в моем случае Python) я не собирался. Уж слишком сложно и лениво. Однако, если быть совсем честным, с этим языком я уже сталкивался, когда разрабатывал свою визуальную новеллу на движке RenPy. Полным нулем я бы себя не назвал. Но ChatGPT в помощь.

Начало работы

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

Ссылка ведёт напрямую в плеер — и, собственно, полетели. Всё просто. Поначалу всё получалось отлично. Нейронка написала тестовый код по моему запросу, чтобы чисто функциональность кнопок проверить. Это было мило. Да и я порылся в инете и нашёл документацию к другим телеграм-ботам с похожим функционалом.

На GitHub этого добра совсем немного. Да и, насколько я увидел, все эти проекты уже давно заброшены. Но наследие живёт — спасибо людям, которые выкладывают свои детища в open source. Без вас бы у меня ничего не вышло!

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

Как я телеграм-бота с помощью ChatGPT писал

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

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

В итоге у меня получилось. Постепенно бот обретал функциональность, и картина вырисовывалась удовлетворительная. Я начал раздавать бота на тесты своим друзьям. Они мне давали фидбэк: что поправить, что добавить и так далее. Так появились вкладка "Избранное" и базовый дизайн.

К слову о ChatGPT и его роли...

Он буквально ломается от большого количества кода. Я работал с моделью GPT-4o, и она ну пиздец какая забывчивая. Проходит пара сообщений, где мы отлаживали код, и вот ChatGPT уже нахуй забыл весь контекст. Начинает писать какую-то ахинею и ошибаться.

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

"С самого начала" — в том плане, что приходилось создавать новый чистый чат с нейронкой и заново пояснять за код и что вообще требуется. Это заёбывало невероятно, но я не наглею. В конце концов, нормальные программисты всё вручную пишут, а я тут выёбываюсь.

Короче говоря, день за днём, ночь за ночью, я отлаживал баги, добавлял новый функционал, менял старый. Самым тяжёлым было добавить второй источник парсинга и сделать так, чтобы бот собирал с них инфу одновременно. Всё было очень нестабильно и ломалось, но в итоге я это поправил.

Стартовая страница бота
Стартовая страница бота

Ещё очень часто ломалось "Избранное". Дело в том, что ChatGPT по какой-то неведомой причине решал, что эта функция не нужна. Своими исправлениями одной части кода он почти всегда ломал мне "Избранное". Я так и не понял, почему он триггерился, но потом я просто додумался до того, чтобы скармливать ему код по частям. Благо, логику я понемногу стал понимать.

13 сентября, где-то в 1:37 ночи по МСК, я закончил работу над альфа-версией бота. Написал документацию и выложил проект на GitHub.

Как я телеграм-бота с помощью ChatGPT писал

Я знаю, что это капля в море и не стоящая ничего работа, но я собой доволен. Для меня было важно реализовать этот проект, попробовать что-то новое и хотя бы чуть-чуть вложить свои силы в open source. Я энтузиаст и всегда делал всё бесплатно (это, кстати, моя проблема), но я уже привык к этому.

На момент написания данной статьи бот не работает. Слетели парсеры, но есть весь функционал, чтобы их быстро поменять. Я считаю, что нужно доработать этот аспект бота, добавить больше парсеров и как-то научить его "держаться", если что-то изменилось (например, ссылка на сайт). Бот, к слову, был загружен на дешёвенький VDS-сервер в свое время. Можно сказать, что в проект я вложил два своих обеда в университетской столовой. Пользуйтесь, если хотите. Возможно, кому-то пригодится.

В общем, спасибо за прочтение этой пасты. Всем мир.

Ссылка на GitHub

10
18 комментариев