Скидки до 28% + 2-ая профессия бесплатно и подарки на 50 000₽

Главная | Все статьи | Дневник студента

Как я писал telegram бот с админкой на Django. Часть 3

Время чтения статьи ~4 минуты
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Как я писал telegram бот с админкой на Django. Часть 3 главное изображение

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

Отображение реакций

Вкратце: @ractionbot - это бот, который добавляет кнопки с реакциями под постами в телеграм канале. Можно менять реакции, добавлять несколько каналов и т.д. Но недавно появилась идея показывать автору канала не только число реакций, но и пользователей, которые эти реакции оставили.

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

  • отправлять список пользователей прямо внутри диалога с ботом. В реализации очень просто, но к удобству много вопросов. Если у поста больше хотя бы 50 реакций, то список будут сложно прочитать. Про случаи, когда у поста несколько тысяч реакций, вообще молчу.
  • отправлять пользователю csv файл со списком. Но тут вообще все сложно. Нужно создавать файл, загружать его на сервера телеграм, потом отправлять пользователю. После скачивания файл тоже нужно как-то посмотреть. Вероятно на телефоне должен быть установлен MS Excel или что-то подобное.
  • отображать веб страничку со списком пользователей. Этот вариант мне нравится больше всего. Пользователю не нужны никакие дополнительные действия. А у меня тоже уже есть сервер, на котором запущен django с админкой.

Читайте также: Как создать бота в Telegram: большая инструкция

Остановился на последнем варианте. Быстренько сверстал простую страничку, написал выборку пользователей, готово. В этом моменте ничего сложного нет. На любой возникший вопрос я читаю документацию django на оф. сайте, а не просто копирую код со Stack Overflow. Ведь цель всего этого проекта - получить опыт и знания в новой области (python, django, telegram bot api).

Следующий шаг - отдавать пользователю ссылку на страничку с реакциями. Бот хостится на Digital Ocean, и у меня есть IP адрес сервера, но отдавать пользователю ссылку в формате http://123.456.789.001/post/32 совсем не хотелось. Решил купить домен и настроить записи для своего NS сервера.
Если вы не знаете, что такое DNS, то рекомендую изучить статью на hexlet Что такое DNS.
Домен купил на gandi, прочитал инструкцию по настройке nameservers на самом Digital Ocean и пошел делать.

Gandi

  • открываем вкладку Domains и выбираем нужный домен (у меня их там несколько)
  • на вкладке Nameservers нажимаем Change и добавляем сервера DO
  • нажимаем Save и ждем пару часов пока записи применятся

nameservers

Digital Ocean

Пока записи в nameservers применяются, мы можем настроить Digital Ocean

  • открываем вкладку Networking > Domains
  • добавляем домен и настраиваем записи
  • HOSTNAME - @, WILL DIRECT TO - выбираем нужный дроплет

Спустя час, обновятся записи по домену и появится возможность обращаться к сервису использую доменное имя, а не ip адрес. Теперь ссылка на детали публикации выглядит так: http://raction.site/reactions/11263/

О проекте

Очень важно при изучении новых технологий подкреплять их практикой. Брать новые сложные проекты и делать их шаг за шагом. Пока писал этот бот - выучил много нового:

  • python. Никогда раньше не писал на python, а теперь пишу. Он очень удобен для быстрого решения небольших задач.
  • django. Наверное, написание админки самостоятельно заняло бы слишком много времени. Django дал возможность быстро подредактировать шаблоны, выборки и отображения чтобы получить функциональную админ панель для бота. Теперь вижу список пользователей, каналов, постов. Могу отправлять нотификации и много чего другого с минимумом усилий.
  • github actions. Практически сразу же настроил CI\CD для проекта и тебе советую. Исправление багов и поставка на "прод" происходит очень легко и без ручного вмешательства.
  • digital ocean. Разобрался, как настроить дроплет, добавить его в github и как разворачивать приложения с помощью docker.
  • dns. Купил доменное имя, связал с приложением и это оказалось совсем не сложно. Для будущих проектов эти знания еще не раз пригодятся.

Изучите основы Python бесплатно

Пройти бесплатный курс

Цифры

За время от первого запуска проекта до сегодня могу поделиться такими цифрами:

  • диалог с @ractionbot начали 567 администраторов
  • бот был добавлен в 110 каналов
  • опубликовано 12459 постов
  • и 3005 пользователей оставило 10111 реакций

Из этих цифр можно сделать некоторые выводы, как например, что только 20% админов смогли добавить бот к себе в канал. Это не очень хороший показатель и знак, что с удобством использования еще нужно работать. Или что опубликовано 12459 постов и всего 10111 реакций. Это значит, что в большинстве каналов нет подписчиков или их количество очень мало. Ну или контент совсем неинтересен и читатели не оставляют никаких реакций.

У моего канала тоже пока совсем немного подписчиков. Если тебе интересно следить за развитием подобных проектов, то подпишись на Yura Hunter. Там я публикую посты, которые не дотягивают до большой заметки на Hexlet.

Тебе желаю классных проектов и стать настоящим разработчиком!

Аватар пользователя Yura Hunter
Yura Hunter 25 января 2021
4
Похожие статьи
Рекомендуемые программы
профессия
Верстка на HTML5 и CSS3, Программирование на JavaScript в браузере, разработка клиентских приложений используя React
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Тестирование веб-приложений, чек-листы и тест-кейсы, этапы тестирования, DevTools, Postman, SQL, Git, HTTP/HTTPS, API
4 месяца
с нуля
Старт 26 декабря
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Google таблицы, SQL, Python, Superset, Tableau, Pandas, визуализация данных, Anaconda, Jupyter Notebook, A/B-тесты, ROI
9 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Ruby, Разработка веб-приложений и сервисов используя Rails, проектирование и реализация REST API
5 месяцев
c опытом
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Git, JavaScript, Playwright, бэкенд-тесты, юнит-тесты, API-тесты, UI-тесты, Github Actions, HTTP/HTTPS, API, Docker, SQL
8 месяцев
c опытом
Старт 26 декабря