Задать вопрос
@DVoropaev
Ставлю + к карме на хабре за ответы на вопросы

Как через телеграм бот отправить .ovpn файл, чтобы он открылся на телефоне?

Я пишу телеграм-бота, который генерирует .ovpn файлы и рассылает пользователям.
У меня есть такой код:
async def generate_certificate(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int:
    """Генерация сертификата и отправка файла пользователю."""
    username = update.message.text.strip()

    # Команда для генерации сертификата
    command = f"/root/VPN-TIME/src/scripts/ovpn-gen.sh /root/easy-rsa-master/easyrsa3 /root/OVPNS /root/user-conf.ovpn {username}"

    try:
        # Выполнение команды bash
        result = subprocess.run(command, shell=True, capture_output=True, text=True, check=True)

        # Получаем путь к сгенерированному файлу
        generated_file_path = result.stdout.strip()

        if generated_file_path:
            # Отправляем файл пользователю
            with open(generated_file_path, 'rb') as file:
                await context.bot.send_document(chat_id=update.effective_chat.id, document=file)

            await update.message.reply_text(f"Сертификат для пользователя {username} успешно сгенерирован и отправлен.")
        else:
            await update.message.reply_text("Ошибка при генерации сертификата.")
    except subprocess.CalledProcessError as e:
        await update.message.reply_text(f"Произошла ошибка при запуске скрипта: {e}")
    except FileNotFoundError:
        await update.message.reply_text(f"Файл не найден: {generated_file_path}")
    except Exception as e:
        await update.message.reply_text(f"Ошибка: {e}")

    return ConversationHandler.END


Генерация проходит успешно, я получаю корректный .ovpn файл. И его содержимое и его имя корректны. У меня даже получается успешно подключиться к OpenVPN с помощью него
но есть одна проблема:

Когда я сам себе отправляю этот файл (вручную), захожу в телеграм с телефона и нажимаю на файл, то он сразу открывается в openvpn connect. Однако если мне этот файл пришел через бота, то при нажатии на файл он не открывается в openvpn connect (смотри скрин)
678c2d6086b3b757840967.jpeg
ChatGPT мне предлагал решить проблему указанием mime-типа:
mime_type="application/x-openvpn-profile"
Однако я получаю ошибку:
ExtBot.send_document() got an unexpected keyword argument 'mime_type'

ChatGPT предложил мне проверить файл .ovpn на валидность (а он валидный, проверял) и принудительно перед отправкой добавлять к файлу расширение ".onvpn", а оно и так стоит
  • Вопрос задан
  • 19 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
SpectrumData Екатеринбург
от 200 000 до 300 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
19 янв. 2025, в 02:12
70000 руб./за проект
19 янв. 2025, в 01:58
20000 руб./за проект
18 янв. 2025, в 23:27
50000 руб./за проект