Как переслать видео из одного бота другому, не потеряв изначальный file_id (Telegram)
У меня есть 1 бот в телеграмме, который может принимать отправленные в него видео и сохранять их file_id в video.py. Теперь мне нужно чтобы все полученные видео были переданы другому боту, но главное условие, чтобы видео сохранили прежний file_id, как это можно реализовать?
# Обработчик видео сообщений для хранения file_id в video.py
@bot.message_handler(content_types=["video"])
def handle1_video(message):
video_id = message.video.file_id
with open('video.py', 'a') as file:
file.write(f"\nfile.append('{video_id}')")
bot.reply_to(message, f"{video_id}")
Ответы (1 шт):
Автор решения: Medvedev
→ Ссылка
То что вы пытаетесь реализовать в рамках телеграма невозможно. file_id актуален только в рамках одного бота, в других ботах при попытке воспользоваться этим file_id будет ошибка.
В вашем случае только сохранять отправленные в первого бота файлы и эти файлы уже отправлять другим ботом. пример для сохранения видео:
# этот хендлер будет сохранять все отправленные боту видео
@bot.message_handler(content_types=['video'])
def func_video(message):
file_id = message.video.file_id
file_info = bot.get_file(file_id)
downloaded_file = bot.download_file(file_info.file_path)
# путь к месту хранения видео
save_path = '/путь_к_вашей_папке/видео'
# проверяем есть ли папка, если нет создаем
if not os.path.exists(save_path):
os.makedirs(save_path)
# сохраняем файл
with open(os.path.join(save_path, 'name_file.mp4'), 'wb') as file:
file.write(downloaded_file)
и для отправки другим ботом:
video = open('/путь_к_вашей_папке/видео/name_file.mp4', 'rb')
bot.send_video(chat_id=call.message.chat.id, video=video)