Skip to content

[зеркало с GitLab] Пример бота обратной связи без использования БД: https://t.me/Groosha_bot

License

Notifications You must be signed in to change notification settings

Chaos2356/telegram-feedback-bot

 
 

Repository files navigation

Feedback Bot

Предыстория

Когда-то давно в Telegram все пересланные сообщения содержали информацию об авторе, в частности, ID. Благодаря этому можно было легко делать ботов для обратной связи, когда юзер пишет боту, а автор бота через него отвечает. К сожалению, в марте 2019 года всё изменилось и пересланные сообщения от некоторых людей потеряли информацию об отправителях.

Для решения этой проблемы разработчики ботов стали сохранять ID авторов сообщений на стороне бота, а затем провязывать эти айдишники, но я лично считаю такой подход избыточным, т.к. такие данные, по сути, должны храниться вечно (мало ли, на какое сообщение вы решите ответить). В результате появился этот бот. Из плюсов: элементарно контейнеризируется, поскольку хранит всё в оперативной памяти (например, списки блокировок). Из минусов: поддерживает только те сообщения от пользователей, где можно добавлять подпись или редактировать текст, не поддерживает возможность сделать "ответ" (reply) на сообщение (в теории, решаемо) и не позволяет корректно реагировать на редактирование сообщений. Лично меня устраивает такой расклад.

Принцип работы

Сообщения от пользователей копируются методом copyMessage в чат к админу (или админам) с добавлением ID пользователя в виде хэштега, например, #id1234567, к тексту или подписи к медиафайлу. Когда администратор отвечает на сообщение, этот хэштег извлекается, парсится и используется в качестве получателя.

Установка

Весь бот представлен в виде модуля, поэтому запускается как python -m bot, и легко запихивается в Systemd и Docker. Желающие взять готовый Docker-образ могут проследовать сюда. В наличии сборки для архитектур amd64 и ARM64.

Все настройки берутся из переменных окружения в качестве примера лежит файл env_dist, из которого можно получить полноценный .env. Как уже понятно, установка заточена под Docker, однако нет никаких проблем с запуском через Systemd.

Переменная ADMIN_CHAT_ID должна быть числом, равным идентификатору либо лички с админом, либо группы (желательно, супергруппы), все участники которой будут считаться равноправными администраторами бота.

About

[зеркало с GitLab] Пример бота обратной связи без использования БД: https://t.me/Groosha_bot

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 97.6%
  • Dockerfile 2.4%