0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Возможно, ты уже успел прочитать<a>предыдущие заметки</a>о том, как я писал телеграм бот на python с админкой на django. Сегодня хочу поделиться еще одной заметкой о том, что мне вообще дал этот проект и еще немножко технических деталей.</p>
1
<p>Возможно, ты уже успел прочитать<a>предыдущие заметки</a>о том, как я писал телеграм бот на python с админкой на django. Сегодня хочу поделиться еще одной заметкой о том, что мне вообще дал этот проект и еще немножко технических деталей.</p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>Отображение реакций</a></li>
3
<ul><li><a>Отображение реакций</a></li>
4
<li><a>О проекте</a></li>
4
<li><a>О проекте</a></li>
5
</ul><h2>Отображение реакций</h2>
5
</ul><h2>Отображение реакций</h2>
6
<p>Вкратце: @ractionbot - это бот, который добавляет кнопки с реакциями под постами в телеграм канале. Можно менять реакции, добавлять несколько каналов и т.д. Но недавно появилась идея показывать автору канала не только число реакций, но и пользователей, которые эти реакции оставили.</p>
6
<p>Вкратце: @ractionbot - это бот, который добавляет кнопки с реакциями под постами в телеграм канале. Можно менять реакции, добавлять несколько каналов и т.д. Но недавно появилась идея показывать автору канала не только число реакций, но и пользователей, которые эти реакции оставили.</p>
7
<p>Реализовать такую функциональность можно было бы несколькими способами:</p>
7
<p>Реализовать такую функциональность можно было бы несколькими способами:</p>
8
<ul><li>отправлять список пользователей прямо внутри диалога с ботом. В реализации очень просто, но к удобству много вопросов. Если у поста больше хотя бы 50 реакций, то список будут сложно прочитать. Про случаи, когда у поста несколько тысяч реакций, вообще молчу.</li>
8
<ul><li>отправлять список пользователей прямо внутри диалога с ботом. В реализации очень просто, но к удобству много вопросов. Если у поста больше хотя бы 50 реакций, то список будут сложно прочитать. Про случаи, когда у поста несколько тысяч реакций, вообще молчу.</li>
9
<li>отправлять пользователю csv файл со списком. Но тут вообще все сложно. Нужно создавать файл, загружать его на сервера телеграм, потом отправлять пользователю. После скачивания файл тоже нужно как-то посмотреть. Вероятно на телефоне должен быть установлен MS Excel или что-то подобное.</li>
9
<li>отправлять пользователю csv файл со списком. Но тут вообще все сложно. Нужно создавать файл, загружать его на сервера телеграм, потом отправлять пользователю. После скачивания файл тоже нужно как-то посмотреть. Вероятно на телефоне должен быть установлен MS Excel или что-то подобное.</li>
10
<li>отображать веб страничку со списком пользователей. Этот вариант мне нравится больше всего. Пользователю не нужны никакие дополнительные действия. А у меня тоже уже есть сервер, на котором запущен django с админкой.</li>
10
<li>отображать веб страничку со списком пользователей. Этот вариант мне нравится больше всего. Пользователю не нужны никакие дополнительные действия. А у меня тоже уже есть сервер, на котором запущен django с админкой.</li>
11
</ul><blockquote><h3>Читайте также:</h3>
11
</ul><blockquote><h3>Читайте также:</h3>
12
<p><a>Как создать бота в Telegram</a>: большая инструкция</p>
12
<p><a>Как создать бота в Telegram</a>: большая инструкция</p>
13
</blockquote><p>Остановился на последнем варианте. Быстренько сверстал простую страничку, написал выборку пользователей, готово. В этом моменте ничего сложного нет. На любой возникший вопрос я читаю документацию django на оф. сайте, а не просто копирую код со Stack Overflow. Ведь цель всего этого проекта - получить опыт и знания в новой области (python, django, telegram bot api).</p>
13
</blockquote><p>Остановился на последнем варианте. Быстренько сверстал простую страничку, написал выборку пользователей, готово. В этом моменте ничего сложного нет. На любой возникший вопрос я читаю документацию django на оф. сайте, а не просто копирую код со Stack Overflow. Ведь цель всего этого проекта - получить опыт и знания в новой области (python, django, telegram bot api).</p>
14
<p>Следующий шаг - отдавать пользователю ссылку на страничку с реакциями. Бот хостится на Digital Ocean, и у меня есть IP адрес сервера, но отдавать пользователю ссылку в формате<a>http://123.456.789.001/post/32</a>совсем не хотелось. Решил купить домен и настроить записи для своего NS сервера. Если вы не знаете, что такое DNS, то рекомендую изучить статью на hexlet<a>Что такое DNS</a>. Домен купил на<a>gandi</a>, прочитал инструкцию по настройке nameservers на самом<a>Digital Ocean</a>и пошел делать.</p>
14
<p>Следующий шаг - отдавать пользователю ссылку на страничку с реакциями. Бот хостится на Digital Ocean, и у меня есть IP адрес сервера, но отдавать пользователю ссылку в формате<a>http://123.456.789.001/post/32</a>совсем не хотелось. Решил купить домен и настроить записи для своего NS сервера. Если вы не знаете, что такое DNS, то рекомендую изучить статью на hexlet<a>Что такое DNS</a>. Домен купил на<a>gandi</a>, прочитал инструкцию по настройке nameservers на самом<a>Digital Ocean</a>и пошел делать.</p>
15
<h3>Gandi</h3>
15
<h3>Gandi</h3>
16
<ul><li>открываем вкладку Domains и выбираем нужный домен (у меня их там несколько)</li>
16
<ul><li>открываем вкладку Domains и выбираем нужный домен (у меня их там несколько)</li>
17
<li>на вкладке Nameservers нажимаем Change и добавляем сервера DO</li>
17
<li>на вкладке Nameservers нажимаем Change и добавляем сервера DO</li>
18
<li>нажимаем Save и ждем пару часов пока записи применятся</li>
18
<li>нажимаем Save и ждем пару часов пока записи применятся</li>
19
</ul><h3>Digital Ocean</h3>
19
</ul><h3>Digital Ocean</h3>
20
<p>Пока записи в nameservers применяются, мы можем настроить Digital Ocean</p>
20
<p>Пока записи в nameservers применяются, мы можем настроить Digital Ocean</p>
21
<ul><li>открываем вкладку Networking > Domains</li>
21
<ul><li>открываем вкладку Networking > Domains</li>
22
<li>добавляем домен и настраиваем записи</li>
22
<li>добавляем домен и настраиваем записи</li>
23
<li>HOSTNAME - @, WILL DIRECT TO - выбираем нужный дроплет</li>
23
<li>HOSTNAME - @, WILL DIRECT TO - выбираем нужный дроплет</li>
24
</ul><p>Спустя час, обновятся записи по домену и появится возможность обращаться к сервису использую доменное имя, а не ip адрес. Теперь ссылка на детали публикации выглядит так:<a>http://raction.site/reactions/11263/</a></p>
24
</ul><p>Спустя час, обновятся записи по домену и появится возможность обращаться к сервису использую доменное имя, а не ip адрес. Теперь ссылка на детали публикации выглядит так:<a>http://raction.site/reactions/11263/</a></p>
25
<h2>О проекте</h2>
25
<h2>О проекте</h2>
26
<p>Очень важно при изучении новых технологий подкреплять их практикой. Брать новые сложные проекты и делать их шаг за шагом. Пока писал этот бот - выучил много нового:</p>
26
<p>Очень важно при изучении новых технологий подкреплять их практикой. Брать новые сложные проекты и делать их шаг за шагом. Пока писал этот бот - выучил много нового:</p>
27
<ul><li>python. Никогда раньше не писал на python, а теперь пишу. Он очень удобен для быстрого решения небольших задач.</li>
27
<ul><li>python. Никогда раньше не писал на python, а теперь пишу. Он очень удобен для быстрого решения небольших задач.</li>
28
<li>django. Наверное, написание админки самостоятельно заняло бы слишком много времени. Django дал возможность быстро подредактировать шаблоны, выборки и отображения чтобы получить функциональную админ панель для бота. Теперь вижу список пользователей, каналов, постов. Могу отправлять нотификации и много чего другого с минимумом усилий.</li>
28
<li>django. Наверное, написание админки самостоятельно заняло бы слишком много времени. Django дал возможность быстро подредактировать шаблоны, выборки и отображения чтобы получить функциональную админ панель для бота. Теперь вижу список пользователей, каналов, постов. Могу отправлять нотификации и много чего другого с минимумом усилий.</li>
29
<li>github actions. Практически сразу же настроил CI\CD для проекта и тебе советую. Исправление багов и поставка на "прод" происходит очень легко и без ручного вмешательства.</li>
29
<li>github actions. Практически сразу же настроил CI\CD для проекта и тебе советую. Исправление багов и поставка на "прод" происходит очень легко и без ручного вмешательства.</li>
30
<li>digital ocean. Разобрался, как настроить дроплет, добавить его в github и как разворачивать приложения с помощью docker.</li>
30
<li>digital ocean. Разобрался, как настроить дроплет, добавить его в github и как разворачивать приложения с помощью docker.</li>
31
<li>dns. Купил доменное имя, связал с приложением и это оказалось совсем не сложно. Для будущих проектов эти знания еще не раз пригодятся.</li>
31
<li>dns. Купил доменное имя, связал с приложением и это оказалось совсем не сложно. Для будущих проектов эти знания еще не раз пригодятся.</li>
32
</ul><h3>Цифры</h3>
32
</ul><h3>Цифры</h3>
33
<p>За время от первого запуска проекта до сегодня могу поделиться такими цифрами:</p>
33
<p>За время от первого запуска проекта до сегодня могу поделиться такими цифрами:</p>
34
<ul><li>диалог с @ractionbot начали 567 администраторов</li>
34
<ul><li>диалог с @ractionbot начали 567 администраторов</li>
35
<li>бот был добавлен в 110 каналов</li>
35
<li>бот был добавлен в 110 каналов</li>
36
<li>опубликовано 12459 постов</li>
36
<li>опубликовано 12459 постов</li>
37
<li>и 3005 пользователей оставило 10111 реакций</li>
37
<li>и 3005 пользователей оставило 10111 реакций</li>
38
</ul><p>Из этих цифр можно сделать некоторые выводы, как например, что только 20% админов смогли добавить бот к себе в канал. Это не очень хороший показатель и знак, что с удобством использования еще нужно работать. Или что опубликовано 12459 постов и всего 10111 реакций. Это значит, что в большинстве каналов нет подписчиков или их количество очень мало. Ну или контент совсем неинтересен и читатели не оставляют никаких реакций.</p>
38
</ul><p>Из этих цифр можно сделать некоторые выводы, как например, что только 20% админов смогли добавить бот к себе в канал. Это не очень хороший показатель и знак, что с удобством использования еще нужно работать. Или что опубликовано 12459 постов и всего 10111 реакций. Это значит, что в большинстве каналов нет подписчиков или их количество очень мало. Ну или контент совсем неинтересен и читатели не оставляют никаких реакций.</p>
39
<p>У моего канала тоже пока совсем немного подписчиков. Если тебе интересно следить за развитием подобных проектов, то подпишись на<a>Yura Hunter</a>. Там я публикую посты, которые не дотягивают до большой заметки на Hexlet.</p>
39
<p>У моего канала тоже пока совсем немного подписчиков. Если тебе интересно следить за развитием подобных проектов, то подпишись на<a>Yura Hunter</a>. Там я публикую посты, которые не дотягивают до большой заметки на Hexlet.</p>
40
<p>Тебе желаю классных проектов и стать настоящим разработчиком!</p>
40
<p>Тебе желаю классных проектов и стать настоящим разработчиком!</p>