An open API service indexing awesome lists of open source software.

https://github.com/oli3djon/telegram-feedback-bot

Бота обратной связи без использования БД
https://github.com/oli3djon/telegram-feedback-bot

aiogram aiogram3 telegrambot telgram

Last synced: 3 months ago
JSON representation

Бота обратной связи без использования БД

Awesome Lists containing this project

README

          

# Feedback Bot

## Предыстория

Когда-то давно в Telegram все пересланные сообщения содержали информацию об авторе, в частности, ID. Благодаря этому
можно было легко делать ботов для обратной связи, когда юзер пишет боту, а автор бота через него отвечает. К сожалению,
в марте 2019 года всё [изменилось](https://telegram.org/blog/unsend-privacy-emoji#anonymous-forwarding) и пересланные сообщения
от некоторых людей потеряли информацию об отправителях.

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

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

Сообщения от пользователей копируются методом [copyMessage](https://core.telegram.org/bots/api#copymessage)
в чат к админу (или админам) с добавлением ID пользователя в виде хэштега, например, #id1234567, к тексту или подписи
к медиафайлу. Когда администратор отвечает на сообщение, этот хэштег извлекается, парсится и используется в качестве
получателя.

Как переписку видит пользователь:

image

В свою очередь, администратор видит так (и может пользоваться расширенным набором команд):

image

## Установка

### Системные требования:
1. Python 3.9 и выше (не нужно при запуске с Docker);
2. Linux (должно работать на Windows, но могут быть сложности с установкой);
3. Systemd (для запуска через systemd);
4. Docker (для запуска с Docker). Старые версии Docker требуют отдельно docker-compose.

### Просто потестировать (не рекомендуется)
1. Клонируйте репозиторий;
2. Перейдите (`cd`) в склонированный каталог и создайте виртуальное окружение Python (Virtual environment, venv);
3. Активируйте venv и установите все зависимости из `requirements.txt`;
4. Скопируйте `env_example` под именем `.env` (с точкой в начале), откройте его и заполните переменные;
5. Внутри активированного venv: `python -m bot`.

### Systemd
1. Выполните шаги 1-4 из раздела "просто потестировать" выше;
2. Скопируйте `feedback-bot.example.service` в `feedback-bot.service`, откройте и отредактируйте переменные `WorkingDirectory`
и `ExecStart`;
3. Скопируйте (или создайте симлинк) файла службы в каталог `/etc/systemd/system/`;
4. Активируйте сервис и запустите его: `sudo systemctl enable feedback-bot --now`;
5. Проверьте, что сервис запустился: `systemctcl status feedback-bot` (можно без root-прав).

### Docker + Docker Compose
1. Возьмите файл `docker-compose.example.yml` из репозитория и переименуйте как `docker-compose.yml`;
2. Возьмите файл `env_example` там же, переименуйте как `.env` (с точкой в начале), откройте и заполните переменные;
3. Запустите бота: `docker compose up -d` (или `docker-compose up -d` на старых версиях Docker);
4. Проверьте, что контейнер поднялся: `docker compose ps`

## Локализация

Если вы хотите изменить тексты в боте, ознакомьтесь с информацией в
[Wiki](https://github.com/MasterGroosha/telegram-feedback-bot/wiki). В настоящий момент поддерживается только
изменение текстов сообщений, но не описаний в меню команд

Папку `bot/locales` в случае с развертыванием бота в Docker можно переопределить, подсунув её снаружи как volume.