Как я telegram чат-бота для поиска телеграм каналов писал. Продвижение в телеграм
На связи Медведев Антон 🫡
Как-то я написал бота для комментинга в телеграм, который плавно переквалифицировался в нейрокомментинг. Это когда комментарий пишет нейросеть, а не вы ручками… вот статья про это
ЗАЧЕМ парсер ДЛЯ телеграм каналов?
Одно из самых нудных занятий — это искать каналы в телеграм по нужным тематикам.
Это надо идти в каталоги такие как tgstat и telemter и там шуршать долго и скурпулезно собирая по одной ссылочке
Я это терпеть не мог и поэтому прикрутил парсер каналов к тому же чат-боту, через который запускается нейрокомментинг
В дальнейшем понял, что это не удобно и решено было делать отдельного чат-бота в телеграм, где только парсер/поисковик телеграм каналов.
1. Техническая часть
Возможно кому-то будет душно и непонятно (можно пропустить), а кто любит это дело Welcome
Но есть у Django один жирный минус в нашем 2023 году… это весьма посредственная поддержка асинхронности. И ладно если там Django, что-то попытался сделать, но многие библиотеки, которые пилились под Django перестали обновляться и плевали на эту вашу асинхронность.
В итоге я выбрал для себя новые технологии. Я точно понимал, что это будет FastAPI, с ним я уже знаком.
А вот как работать с БД? В очередной раз пошел на сайт sqlalchemy и снова увидев их документацию, почувствовал что-то типа: "Уффф, как все сложно…" и закрыл сайт
Django избаловал просто: -D
Пошел искать разные альтернативы и поисковик меня привел к интересному сайту-каталогу асинхронных решений для python
P. S. В последствии, не помню как, но я наткнулся на SQLModel и заменил GINO на него. По сути и то и то — это удобная обертка для SQLAlchemy, но SQLModel основана на знакомом Pydantic,
Подключение к БД
Долго думал, как же лучше подключиться к БД и главное где это делать и как потом это подключение использовать.
Миграции
Сразу же встал вопрос, как это потом накатить в БД. Тут напомощь пришла еще одна либа Alembic. Несколько часов я пытался его подружить с GINO, чтобы он наконец-то увидел модели БД. Потом выяснил, что я не указал в конфиге порт для БД и он соединиться ней нормально не мог и при этом не выдавал никаких ошибок. Просто писал «изменений в моделях нет». Но я его победил
Админка
В один момент меня осенило. "Блин! Тут же нет никакой админки как в Django« Там то она просто »изкаропки". Далее были поиски админки для всё этого хозяйства. Было вроде много вариантов, но документации оставляла желать лучшего. А потом выяснил, что админка должна поддерживать ту либу, которую я взял для моделей в БД, то есть SQLModel.
Выбор пал на SQLAdmin, проект довольно свежий, а значит его не забросили ну и он поддерживает то, что мне нужно.
Собрал там костыльную авторизацию и забил на перфекционизм:)
Телеграм Чат-Бот
Тут мой неизменный выбор библиотека — pyTelegramBotAPI
У них шикарная документация и стабильные обновления по новые верси API в телеграм
2. Как работает чат-бот
Встречает он вас описанием и одной единственной кнопкой в меню «Получить доступ к этому боту»
Сразу оговорочка: доступ пока НЕ бесплатный. Нужен он или нет — решите сами, погнали дальше
Получение доступа
Просто жмете на кнопку получить доступ, бот выдает вам ваш id, который нужно скинуть мне в ЛС и я выдам доступ, если условия оплаты вас устроят: )
Меню чат-бота
Я прям отдельно хочу вам показать какое кайфовое меню я сделал. Не знаю как вы, но лично я от него просто в восторге!
Что нужно для старта
Чтобы начать парсить, вам понадобится:
- Прокси сервер. ~22₽/мес Инструкция на тему proxy
- Телеграм аккаунт, подходит аккаунт со спамблоком ~20-100₽ Инструкция на тему аккаунта телеграм
После того как добавите всё в бота, сможете начать собирать телеграм каналы
Дополнительные настройки
Первое — это возможность добавить список стоп слов. Если парсер встретит эти слова, он исключит каналы из результатов поиска
Второе — это выставление минимального числа подписчиков в канале. Если подписчиков меньше — каналы отбрасываются из поиска
И киллер фича — проверка каналов на наличие открытых комментариев.
Тут важно понимать, что это аккаунт телеграм идет в канал и смотрит есть ли у него открытые комментарии. Если дать аккаунту слишком много такого делать, то в итоге он ловит, так называемый FloodWait за слишком частые обращения в телеграм.
Но это не страшно, ведь можно добавить еще один аккаунт и еще один…
Как выглядят результаты поиска
Вы можете написать сразу 3-5-10 запросов с новой строки
Чат-бот будет искать по всем этим запросам, а в конце объединит результат и проверит каналы на дубли, почистит от дублей и выдаст только уникальные результаты