Возможно, ты уже успел прочитать предыдущие заметки о том, как я писал телеграм бот на 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 и ждем пару часов пока записи применятся
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.
Тебе желаю классных проектов и стать настоящим разработчиком!