---
title: Установка и настройка телеграм-бота для отправки HTTP-запросов в 1с
slug: администрирование/установка-и-настройка-телеграм-бота-для-отправки-http-запросов-в-1с
---
# 📘 Инструкция по установке и обслуживанию Telegram JSON File Bot

## 🧩 Зависимости

- Python 3.9+
- `python3-venv`, `pip`
- Рабочий Telegram-бот (токен от @BotFather)
- URL HTTP-сервиса на стороне 1С
- Пользователь `god` на сервере

---

## 📁 1. Установка

```bash
sudo apt update
sudo apt install python3 python3-pip python3-venv -y
```

Создаём директорию для проекта:

```bash
mkdir -p ~/telegram_bot
cd ~/telegram_bot
```

Создаём виртуальное окружение и активируем:

```bash
python3 -m venv venv
source venv/bin/activate
```

Устанавливаем зависимости:

```bash
pip install python-telegram-bot requests
```

---

## 🧠 2. Создание `bot.py`

Создай файл `bot.py`:

```bash
nano ~/telegram_bot/bot.py
```

Вставь код (адаптируй токен и URL):

```python
import logging
import requests
from io import BytesIO
from telegram import Update
from telegram.ext import ApplicationBuilder, MessageHandler, ContextTypes, filters

# Настройки
BOT_TOKEN = 'ТВОЙ_ТОКЕН'
TARGET_URL = 'http://IP_ИЛИ_ДОМЕН_1С/endpoint'
ALLOWED_USERS = {123456789}  # замени на свой Telegram ID
HTTP_USERNAME = '1c_user'    # если требуется Basic Auth
HTTP_PASSWORD = '1c_pass'

logging.basicConfig(level=logging.INFO)

def is_authorized(user_id: int) -> bool:
    return user_id in ALLOWED_USERS

async def handle_file(update: Update, context: ContextTypes.DEFAULT_TYPE):
    user_id = update.effective_user.id

    if not is_authorized(user_id):
        await update.message.reply_text("⛔ Доступ запрещён.")
        return

    document = update.message.document
    if not document.file_name.endswith('.json') and not document.file_name.endswith('.txt'):
        await update.message.reply_text("Отправьте .json или .txt файл.")
        return

    file = await document.get_file()
    buffer = BytesIO()
    await file.download_to_memory(out=buffer)
    content_bytes = buffer.getvalue()
    content_str = content_bytes.decode('utf-8', errors='replace')

    try:
        response = requests.post(
            TARGET_URL,
            data=content_str.encode('utf-8'),
            headers={"Content-Type": "application/json"},
            auth=(HTTP_USERNAME, HTTP_PASSWORD)
        )
        await update.message.reply_text(
            f"✅ Файл отправлен.\n"
            f"Статус: {response.status_code}\n"
            f"Ответ:\n{response.text}"
        )
    except Exception as e:
        await update.message.reply_text(f"❌ Ошибка при отправке: {str(e)}")

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text(f"👋 Привет! Твой Telegram ID: {update.effective_user.id}")

if __name__ == '__main__':
    app = ApplicationBuilder().token(BOT_TOKEN).build()
    app.add_handler(MessageHandler(filters.Document.ALL, handle_file))
    app.add_handler(MessageHandler(filters.TEXT & filters.Regex(r'^/start'), start))
    app.run_polling()
```

---

## 🛠 3. Настройка systemd-сервиса

Создай файл:

```bash
sudo nano /etc/systemd/system/telegram-bot.service
```

Содержимое:

```ini
[Unit]
Description=Telegram JSON File Bot
After=network.target

[Service]
Type=simple
WorkingDirectory=/home/god/telegram_bot
ExecStart=/home/god/telegram_bot/venv/bin/python /home/god/telegram_bot/bot.py
Restart=always
RestartSec=5
User=god
Environment=PYTHONUNBUFFERED=1

[Install]
WantedBy=multi-user.target
```

---

## 🚀 4. Запуск и автозапуск

```bash
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable telegram-bot.service
sudo systemctl start telegram-bot.service
```

---

## 🧩 5. Обслуживание

### ▶ Запуск / остановка

```bash
sudo systemctl start telegram-bot.service
sudo systemctl stop telegram-bot.service
sudo systemctl restart telegram-bot.service
```

### 📋 Статус

```bash
sudo systemctl status telegram-bot.service
```

### 📜 Просмотр логов

```bash
journalctl -u telegram-bot.service -f
```

(Для выхода из `journalctl` нажми `Ctrl+C`)

---

## 🔐 Telegram ID

Чтобы узнать свой Telegram ID, отправь боту `/start`.

Бот ответит:
```
👋 Привет! Твой Telegram ID: 123456789
```

Добавь этот ID в список `ALLOWED_USERS`.
