Как я telegram чат-бота для поиска телеграм каналов писал. Продвижение в телеграм

На связи Медведев Антон 🫡

Как я telegram чат-бота для поиска телеграм каналов писал. Продвижение в телеграм

Как-то я написал бота для комментинга в телеграм, который плавно переквалифицировался в нейрокомментинг. Это когда комментарий пишет нейросеть, а не вы ручками… вот статья про это

ЗАЧЕМ парсер ДЛЯ телеграм каналов?

Одно из самых нудных занятий — это искать каналы в телеграм по нужным тематикам.
Это надо идти в каталоги такие как tgstat и telemter и там шуршать долго и скурпулезно собирая по одной ссылочке

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

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

Как я telegram чат-бота для поиска телеграм каналов писал. Продвижение в телеграм

1. Техническая часть

Возможно кому-то будет душно и непонятно (можно пропустить), а кто любит это дело Welcome

Обычно я писал свои проекты в на Django + Python3, тупо потому что это очень удобно. В Django есть почти всё, что необходимо из коробки.

Но есть у Django один жирный минус в нашем 2023 году… это весьма посредственная поддержка асинхронности. И ладно если там Django, что-то попытался сделать, но многие библиотеки, которые пилились под Django перестали обновляться и плевали на эту вашу асинхронность.

В итоге я выбрал для себя новые технологии. Я точно понимал, что это будет FastAPI, с ним я уже знаком.
А вот как работать с БД? В очередной раз пошел на сайт sqlalchemy и снова увидев их документацию, почувствовал что-то типа: "Уффф, как все сложно…" и закрыл сайт

Django избаловал просто: -D

Пошел искать разные альтернативы и поисковик меня привел к интересному сайту-каталогу асинхронных решений для python

Первый мне попался GINO. Начал я на нём все делать… и уже в первые часы я просто восторгался насколько все таки Django крутой проект, где всё уже продумали за тебя.

P. S. В последствии, не помню как, но я наткнулся на SQLModel и заменил GINO на него. По сути и то и то — это удобная обертка для SQLAlchemy, но SQLModel основана на знакомом Pydantic,

Подключение к БД

Долго думал, как же лучше подключиться к БД и главное где это делать и как потом это подключение использовать.

Миграции

Сразу же встал вопрос, как это потом накатить в БД. Тут напомощь пришла еще одна либа Alembic. Несколько часов я пытался его подружить с GINO, чтобы он наконец-то увидел модели БД. Потом выяснил, что я не указал в конфиге порт для БД и он соединиться ней нормально не мог и при этом не выдавал никаких ошибок. Просто писал «изменений в моделях нет». Но я его победил

Админка

В один момент меня осенило. "Блин! Тут же нет никакой админки как в Django« Там то она просто »изкаропки". Далее были поиски админки для всё этого хозяйства. Было вроде много вариантов, но документации оставляла желать лучшего. А потом выяснил, что админка должна поддерживать ту либу, которую я взял для моделей в БД, то есть SQLModel.

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

Собрал там костыльную авторизацию и забил на перфекционизм:)

Телеграм Чат-Бот

Тут мой неизменный выбор библиотека — pyTelegramBotAPI

У них шикарная документация и стабильные обновления по новые верси API в телеграм

2. Как работает чат-бот

Встречает он вас описанием и одной единственной кнопкой в меню «Получить доступ к этому боту»

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

Сразу оговорочка: доступ пока НЕ бесплатный. Нужен он или нет — решите сами, погнали дальше

Получение доступа

Просто жмете на кнопку получить доступ, бот выдает вам ваш id, который нужно скинуть мне в ЛС и я выдам доступ, если условия оплаты вас устроят: )

Меню чат-бота

Я прям отдельно хочу вам показать какое кайфовое меню я сделал. Не знаю как вы, но лично я от него просто в восторге!

Крутое inline меню в чат-боте telegram

Что нужно для старта

Чтобы начать парсить, вам понадобится:

  1. Прокси сервер. ~22₽/мес Инструкция на тему proxy
  2. Телеграм аккаунт, подходит аккаунт со спамблоком ~20-100₽ Инструкция на тему аккаунта телеграм

После того как добавите всё в бота, сможете начать собирать телеграм каналы

Дополнительные настройки

Как я telegram чат-бота для поиска телеграм каналов писал. Продвижение в телеграм

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

Как я telegram чат-бота для поиска телеграм каналов писал. Продвижение в телеграм

Второе — это выставление минимального числа подписчиков в канале. Если подписчиков меньше — каналы отбрасываются из поиска

И киллер фича — проверка каналов на наличие открытых комментариев.

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

FloodWait. Телеграм не дает аккаунту слать запросы на свои сервера и паузы бывают вот такие длинные
FloodWait. Телеграм не дает аккаунту слать запросы на свои сервера и паузы бывают вот такие длинные

Но это не страшно, ведь можно добавить еще один аккаунт и еще один…

Как выглядят результаты поиска

Примерно так выглядят результаты парсинга каналов
Примерно так выглядят результаты парсинга каналов

Вы можете написать сразу 3-5-10 запросов с новой строки

Чат-бот будет искать по всем этим запросам, а в конце объединит результат и проверит каналы на дубли, почистит от дублей и выдаст только уникальные результаты

Подробнее вы можете посмотреть в видео обзоре чат-бота

Видео обзор чат-бота для поиска телеграм каналов
Начать дискуссию