Как настроить телеграм-бота, чтобы он пересылал мне файлы, полученные от других пользователей?

Я разрабатываю Telegram-бота для юридических услуг и хочу реализовать следующую функциональность: когда пользователь нажимает кнопку, он должен иметь возможность отправить документ или фотографию. После того как бот примет этот файл, он должен немедленно переслать его мне в личные сообщения. Как это можно реализовать?
  • 23 января 2025 г. 21:24
Ответы на вопрос 2
Чтобы создать Telegram-бота, который будет пересылать вам файлы, полученные от пользователей, вам нужно будет использовать Telegram Bot API и написать код, который будет обрабатывать входящие сообщения и пересылать файлы.

1. **Создание бота**:
   - Воспользуйтесь BotFather в Telegram для создания нового бота и получения токена API.

2. **Настройка окружения**:
   - Убедитесь, что у вас установлен Python и необходимые библиотеки, такие как `python-telegram-bot`.
   - Для установки библиотеки выполните команду:
     ```bash
     pip install python-telegram-bot
     ```

3. **Код для бота**:
   - Напишите следующий код, который будет обрабатывать входящие файлы и пересылать их вам. Замените `YOUR_BOT_TOKEN` на токен вашего бота, а `YOUR_CHAT_ID` на ваш Chat ID (это можно узнать, отправив сообщение боту и используя метод `getUpdates`).

```python
from telegram import Update, InputFile
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext

# Замените на ваш токен
BOT_TOKEN = 'YOUR_BOT_TOKEN'
# Замените на ваш chat_id
MY_CHAT_ID = 'YOUR_CHAT_ID'

def start(update: Update, context: CallbackContext):
    update.message.reply_text('Привет! Отправьте мне файл или изображение, и я перешлю его вам.')

def forward_file(update: Update, context: CallbackContext):
    if update.message.document:
        # Если пришел документ
        file = update.message.document.get_file()
        file.download()  # Скачать файл если нужно, или сразу отправить
        context.bot.send_document(chat_id=MY_CHAT_ID, document=file.file_id)
    elif update.message.photo:
        # Если пришла фотография
        photo = update.message.photo[-1]  # Берем самую большую фотографию
        file = photo.get_file()
        file.download()  # Скачать файл если нужно
        context.bot.send_photo(chat_id=MY_CHAT_ID, photo=file.file_id)

def main():
    updater = Updater(BOT_TOKEN)

    dp = updater.dispatcher

    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(MessageHandler(Filters.document | Filters.photo, forward_file))

    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()
```

4. **Запуск бота**:
   - Сохраните код в файле, например `bot.py`, и запустите его с помощью Python:
     ```bash
     python bot.py
     ```

5. **Проверка работы**:
   - Откройте чат с вашим ботом в Telegram, нажмите на кнопку "Начать" (или отправьте команду `/start`), а затем отправьте документ или фотографию. Бот должен переслать файл в ваш личный чат.

### Замечания:
- Убедитесь, что ваш бот имеет разрешение на получение сообщений и отправку их в вашу учетную запись.
- Размер и тип файлов, которые можно отправлять через Telegram, имеют ограничения. Убедитесь, что они соблюдаются.
- Если вы планируете размещать бота на сервере, рассмотрите возможность использования таких сервисов, как Heroku, AWS или DigitalOcean.
Ты должен быть подписан на бота. 

В коде бота через методы sendDocument https://core.telegram.org/bots/api#senddocument (или аналогичные) отправляешь файл себе. Для передачи файла вместо имени файла используешь свойство `file_id` которое можно найти в ответе от телеграма при загрузке файла пользователем.
Похожие вопросы