mirror of
https://github.com/artemium428/428th-exchange-bot.git
synced 2026-09-15 16:56:20 +00:00
4.3 KiB
4.3 KiB
428th Exchange Bot
Telegram-бот — прослойка между клиентом и менеджером.
Клиент пишет боту в личку. Менеджер отвечает в супергруппе с Topics: у каждого клиента своя тема. Клиент получает ответы от имени бота.
Требования
- Python 3.9+
- Бот от @BotFather
- Супергруппа с включёнными темами (Topics)
Быстрый старт
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# отредактируйте .env
python -m bot
Настройка Telegram
- Создайте бота у @BotFather и скопируйте token в
BOT_TOKEN. - Создайте супергруппу, включите Topics (настройки группы → Topics).
- Добавьте бота в группу и сделайте администратором с правами:
- Manage topics
- Post messages
- Delete messages (нужно для
/del)
- Узнайте
chat_idгруппы и пропишите вMANAGER_GROUP_ID(обычно отрицательный, вида-100…).- Запустите бота, добавьте его в группу — в лог напишется id чата.
- Либо перешлите любое сообщение из группы боту @userinfobot / аналогу.
- Напишите боту
/startс тестового аккаунта и отправьте сообщение — в группе появится новая тема.
Переменные окружения
| Переменная | Описание |
|---|---|
BOT_TOKEN |
Token бота |
MANAGER_GROUP_ID |
Id супергруппы с Topics |
DATABASE_PATH |
Путь к SQLite (по умолчанию data/bot.db) |
WELCOME_TEXT_RU / WELCOME_TEXT_UK |
Опционально: приветствие для языка |
ACK_TEXT_RU / ACK_TEXT_UK |
Опционально: текст после сообщения клиента |
COOLDOWN_TEXT_RU / COOLDOWN_TEXT_UK |
Опционально: ответ при кулдауне |
WELCOME_TEXT / ACK_TEXT / COOLDOWN_TEXT |
Legacy: только для RU (UK не перезаписывается) |
CLIENT_COOLDOWN_SECONDS |
Кулдаун клиента в секундах (по умолчанию 5) |
Как это работает
- Клиент:
/start→ выбор языка (RU/UK) → приветствие, запись в SQLite. - Клиент пишет сообщение → бот создаёт тему (если ещё нет) и копирует сообщение менеджерам → «Спасибо, подождите ответ».
- Менеджер пишет в теме клиента → бот копирует содержимое клиенту в личку от своего имени.
- Правки сообщений синхронизируются в обе стороны (текст и подписи).
- Реакции синхронизируются в обе стороны.
- Удаление: ответьте на сообщение командой
/del— копия удалится и у клиента, и у менеджера. - Язык можно сменить командой
/lang. Список услуг — кнопка под приветствием.
Сообщения бота в теме (копии от клиента) обратно клиенту не уходят.
Запуск
source .venv/bin/activate
python -m bot
Данные клиентов хранятся в SQLite (telegram_id ↔ topic_id).
Рядом с bot.db могут появляться файлы -wal / -shm (режим WAL) — их тоже не нужно коммитить (data/ в .gitignore).
При старте бот проверяет MANAGER_GROUP_ID: супергруппа с Topics, бот — админ с правами Manage topics и Delete messages. При ошибке процесс завершится с понятным текстом в логе и stderr.