Когда-то давно в Telegram все пересланные сообщения содержали информацию об авторе, в частности, ID. Благодаря этому можно было легко делать ботов для обратной связи, когда юзер пишет боту, а автор бота через него отвечает. К сожалению, в марте 2019 года всё изменилось и пересланные сообщения от некоторых людей потеряли информацию об отправителях.
Для решения этой проблемы разработчики ботов стали сохранять ID авторов сообщений на стороне бота, а затем провязывать эти айдишники, но я лично считаю такой подход избыточным, т.к. такие данные, по сути, должны храниться вечно (мало ли, на какое сообщение вы решите ответить). В результате появился этот бот. Из плюсов: элементарно контейнеризируется, поскольку хранит всё в оперативной памяти (например, списки блокировок). Из минусов: поддерживает только те сообщения от пользователей, где можно добавлять подпись или редактировать текст, не поддерживает возможность сделать "ответ" (reply) на сообщение (в теории, решаемо) и не позволяет корректно реагировать на редактирование сообщений. Лично меня устраивает такой расклад.
Сообщения от пользователей копируются методом copyMessage в чат к админу (или админам) с добавлением ID пользователя в виде хэштега, например, #id1234567, к тексту или подписи к медиафайлу. Когда администратор отвечает на сообщение, этот хэштег извлекается, парсится и используется в качестве получателя.
Как переписку видит пользователь:
В свою очередь, администратор видит так (и может пользоваться расширенным набором команд):
cd
) в склонированный каталог и создайте виртуальное окружение Python (Virtual environment, venv);requirements.txt
;env_example
под именем .env
(с точкой в начале), откройте его и заполните переменные;python -m bot
.feedback-bot.example.service
в feedback-bot.service
, откройте и отредактируйте переменные WorkingDirectory
и ExecStart
;/etc/systemd/system/
;sudo systemctl enable feedback-bot --now
;systemctcl status feedback-bot
(можно без root-прав).docker-compose.example.yml
из репозитория и переименуйте как docker-compose.yml
;env_example
там же, переименуйте как .env
(с точкой в начале), откройте и заполните переменные;docker compose up -d
(или docker-compose up -d
на старых версиях Docker);docker compose ps
Если вы хотите изменить тексты в боте, ознакомьтесь с информацией в Wiki. В настоящий момент поддерживается только изменение текстов сообщений, но не описаний в меню команд
Папку bot/locales
в случае с развертыванием бота в Docker можно переопределить, подсунув её снаружи как volume.