🤖 С чего всё началось: первые шаги в разработке ТГ-бота

Я всегда был подписан на десятки Telegram-каналов — вроде бы все по делу, но листать их каждый день стало отдельной работой. И вот однажды мелькнула мысль: «а почему бы не сделать что-то, что поможет мне сократить время на чтение бесконечного списка каналов? А если сделать бота…» Ну вот, собственно, и рождение идеи.

🧩 А как вообще это всё запускать? Сразу скажу честно: если бы не ChatGPT, я бы просто не знал, с какой стороны подойти. Каждый шаг, каждая библиотека, каждая кнопка в интерфейсе — всё вытягивалось из разговоров: «а как сделать, чтобы пользователь выбирал каналы?» «а как хранить данные, чтобы ничего не терялось?» «а как вообще работает это всё в Telegram?» Так что спасибо искусственному другу. Без него эта история закончилась бы на “а если сделать…”.

🧱 Что подключено сейчас 🟡 Aiogram Основной инструмент — асинхронный фреймворк для Telegram-ботов на Python. Через него всё оживает: кнопки, меню, ответы, действия. Прост в использовании и при этом даёт кучу гибкости.

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

⚪️ OpenAI API (в разработке) В планах — подключить GPT, чтобы делать не просто сводки, а ещё и тематический анализ: о чём говорят в канале, какие идеи поднимаются, на что стоит обратить внимание. Пока в процессе интеграции.

⚪️ APScheduler (в разработке) Хочу, чтобы бот сам напоминал о себе и присылал сводки по расписанию. Утром, вечером, раз в неделю — по выбору. Пока ещё настраивается, но выглядит перспективно.

🟡 PostgreSQL + psycopg2 Сначала я хранил всё в JSON-файлах. Это было просто. Это было удобно. Это было… до первого бага, когда данные одного пользователя начали случайно затирать другого. Теперь у меня локально развернута PostgreSQL-база с основными таблицами: пользователи, каналы, категории. Разделение ролей и доработка структуры будут ближе к релизу.

🤯 Как это всё упаковать в рабочий проект? Оказалось, что самый сложный (и самый важный) вопрос — а как это вообще всё структурировать? Что-то должно быть в оперативной памяти, что-то — только в базе, а что-то — в кэше, чтобы не бомбить базу каждые 3 секунды. Сначала всё мешалось в кучу: категории, каналы, флаги, ID… Было ощущение, что я строю карточный домик из словарей Python.

Но со временем выработалась логика, появились словари с говорящими названиями, кэш — временный, БД — стабильная, а JSON — только для отладки.

Что дальше? В ближайших постах расскажу: – как я подключаю API и разбирался с вызовами/типами функций в Telegram; – и отдельно — про самую большую головную боль всего проекта: хранение данных и выстраивание архитектуры. Поверь, это был не просто “CREATE TABLE”.

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