mirror of
https://github.com/artemium428/first-commenting-bot.git
synced 2026-09-15 16:46:19 +00:00
Auto-replies in a channel discussion chat with HTML text from comment.txt. Co-authored-by: Cursor <cursoragent@cursor.com>
60 lines
2.7 KiB
Markdown
60 lines
2.7 KiB
Markdown
# First commenting bot
|
||
|
||
Telegram-бот, который в discuss-чате канала отвечает заданным текстом на каждый новый пост (автофорвард из канала).
|
||
|
||
## Как это работает
|
||
|
||
1. В канале выходит пост.
|
||
2. Telegram сам дублирует его в привязанный discussion-чат.
|
||
3. Бот видит сообщение с `is_automatic_forward` (автофорвард из канала).
|
||
4. Бот делает reply с текстом из файла [`comment.txt`](comment.txt).
|
||
|
||
Бот слушает **discuss-чат**, не сам канал. В канал его добавлять не нужно.
|
||
Обычные сообщения, личка и команды (`/start` и т.п.) бот игнорирует — на них нет обработчиков.
|
||
|
||
## Настройка в Telegram
|
||
|
||
1. Создайте бота у [@BotFather](https://t.me/BotFather) и скопируйте токен.
|
||
2. В настройках канала включите **Discussion** и привяжите супергруппу.
|
||
3. Добавьте бота в discuss-чат и сделайте **админом** с правом писать сообщения.
|
||
4. Узнайте `chat_id` discuss-чата (отрицательный, вида `-100...`). Удобные способы:
|
||
- переслать любое сообщение из чата боту вроде [@userinfobot](https://t.me/userinfobot);
|
||
- временно залогировать `message.chat.id` в боте.
|
||
|
||
## Установка и запуск
|
||
|
||
```bash
|
||
python3 -m venv .venv
|
||
source .venv/bin/activate
|
||
pip install -r requirements.txt
|
||
cp .env.example .env
|
||
```
|
||
|
||
Заполните `.env`:
|
||
|
||
| Переменная | Описание |
|
||
|---|---|
|
||
| `BOT_TOKEN` | Токен от BotFather |
|
||
| `DISCUSSION_CHAT_ID` | ID discuss-супергруппы (`-100...`) |
|
||
| `COMMENT_FILE` | Опционально: путь к файлу с текстом ответа (относительно корня проекта или абсолютный). По умолчанию — `comment.txt` |
|
||
|
||
Текст ответа редактируйте в [`comment.txt`](comment.txt) в корне проекта (можно многострочный HTML).
|
||
|
||
Запуск:
|
||
|
||
```bash
|
||
python -m bot.main
|
||
```
|
||
|
||
Тесты:
|
||
|
||
```bash
|
||
python -m pytest
|
||
```
|
||
|
||
## Проверка
|
||
|
||
1. Запустите бота.
|
||
2. Опубликуйте тестовый пост в канале.
|
||
3. В discuss-чате появится автофорвард — бот ответит reply’ем текстом из `comment.txt`.
|
||
4. Обычное сообщение в чат бот игнорирует.
|