428th exchange Telegram bot
Find a file
Artemii Peretiachenko 8f6d2c07d6 Initial commit: 428th exchange Telegram bot.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-20 18:19:53 +02:00
bot Initial commit: 428th exchange Telegram bot. 2026-07-20 18:19:53 +02:00
.env.example Initial commit: 428th exchange Telegram bot. 2026-07-20 18:19:53 +02:00
.gitignore Initial commit: 428th exchange Telegram bot. 2026-07-20 18:19:53 +02:00
README.md Initial commit: 428th exchange Telegram bot. 2026-07-20 18:19:53 +02:00
requirements.txt Initial commit: 428th exchange Telegram bot. 2026-07-20 18:19:53 +02:00

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

  1. Создайте бота у @BotFather и скопируйте token в BOT_TOKEN.
  2. Создайте супергруппу, включите Topics (настройки группы → Topics).
  3. Добавьте бота в группу и сделайте администратором с правами:
    • Manage topics
    • Post messages
    • Delete messages (нужно для /del)
  4. Узнайте chat_id группы и пропишите в MANAGER_GROUP_ID (обычно отрицательный, вида -100…).
    • Запустите бота, добавьте его в группу — в лог напишется id чата.
    • Либо перешлите любое сообщение из группы боту @userinfobot / аналогу.
  5. Напишите боту /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)

Как это работает

  1. Клиент: /start → выбор языка (RU/UK) → приветствие, запись в SQLite.
  2. Клиент пишет сообщение → бот создаёт тему (если ещё нет) и копирует сообщение менеджерам → «Спасибо, подождите ответ».
  3. Менеджер пишет в теме клиента → бот копирует содержимое клиенту в личку от своего имени.
  4. Правки сообщений синхронизируются в обе стороны (текст и подписи).
  5. Реакции синхронизируются в обе стороны.
  6. Удаление: ответьте на сообщение командой /del — копия удалится и у клиента, и у менеджера.
  7. Язык можно сменить командой /lang. Список услуг — кнопка под приветствием.

Сообщения бота в теме (копии от клиента) обратно клиенту не уходят.

Запуск

source .venv/bin/activate
python -m bot

Данные клиентов хранятся в SQLite (telegram_idtopic_id). Рядом с bot.db могут появляться файлы -wal / -shm (режим WAL) — их тоже не нужно коммитить (data/ в .gitignore).

При старте бот проверяет MANAGER_GROUP_ID: супергруппа с Topics, бот — админ с правами Manage topics и Delete messages. При ошибке процесс завершится с понятным текстом в логе и stderr.