До 30 ноября

Скидки до 81 000 руб и вторая профессия в подарок!

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

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

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

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

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

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

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

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

Остановился на последнем варианте. Быстренько сверстал простую страничку, написал выборку пользователей, готово. В этом моменте ничего сложного нет. На любой возникший вопрос я читаю документацию 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. Купил доменное имя, связал с приложением и это оказалось совсем не сложно. Для будущих проектов эти знания еще не раз пригодятся.

Цифры

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

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

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

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

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

Аватар пользователя Yura Hunter
Yura Hunter 25 января 2021
4
Рекомендуемые программы
профессия
Осваивайте разработку веб-страниц, оживляйте дизайн макетов, публикуйте сайты и приложения. Отслеживайте ошибки в интерфейсе и устраняйте их
10 месяцев
с нуля
Старт 28 ноября
профессия
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 28 ноября
профессия
Выполняйте ручное тестирование веб-приложений, находите ошибки в продукте. Узнайте все о тест-дизайне.
4 месяца
с нуля
Старт 28 ноября
профессия
Научитесь разработке веб-приложений, сайтов и программного обеспечения на языке Java, программируйте и используйте структуры данных
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Собирайте, анализируйте и интерпретируйте данные, улучшайте бизнес-процессы и продукт компании. Обучитесь работе с библиотеками Python
9 месяцев
с нуля
Старт 28 ноября
профессия
Занимайтесь созданием сайтов, веб-приложений, сервисов и их интеграцией с внутренними бизнес-системами на бекенд-языке PHP
10 месяцев
с нуля
Старт 28 ноября
профессия
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
Обучитесь разработке визуальной части сайта — фронтенда, а также реализации серверной — бэкенда. Освойте HTML, CSS, JavaScript
16 месяцев
с нуля
Старт 28 ноября
профессия
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Организовывайте процесс автоматизации тестирования на проекте, обучитесь языку программирования JavaScript, начните управлять процессом тестирования
8 месяцев
c опытом
Старт 28 ноября