Поддержка интерактивных промптов bash скриптов в Telegram боте на Python
Написав небольшого бота для телеграм бота, который выполняет простую функцию: Сообщение пользователя - команда отправляющаяся в терминал на хосте, а ответ бота - вывод терминала я столкнулся с проблемой: Нет возможности использовать любые скрипты использующее интерактивный ввод, тот-же sudo, из-за чего приходится лезть в терминал.
Прошу знающих ответить, и помочь, возможно ли сделать эту поддержку? Предполагаю можно использовать библиотеку pexpect, но я пока не понял как.
Код ниже
import subprocess
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
TOKEN = ""
# Функция для обработки команды /start
def start(update, context):
update.message.reply_text("First Message.")
# Функция для выполнения команды из сообщения пользователя
def execute_command(update, context):
# Получение команды пользвателя
command = update.message.text
try:
# Выпонение команды в терминале и получение результата
result = subprocess.check_output(command, shell=True, text=True)
# Отправка результата обратно в чат
update.message.reply_text(result)
except Exception as e:
# Вывод ошибок
update.message.reply_text(f"Ошибка: {str(e)}")
# Основная функция бота
def main():
# Объект Updater
updater = Updater(TOKEN, use_context=True)
dp = updater.dispatcher
# Добавляем обработчик для команды /start
dp.add_handler(CommandHandler("start", start))
# Обработчик для текстовых сообщений, которые не являются командами
dp.add_handler(MessageHandler(Filters.text & ~Filters.command, execute_command))
# Запуск бота в режиме опроса
updater.start_polling()
# Запуск бота и идл
updater.idle()
if name == "main":
main()