Поддержка интерактивного ввода через терминал bash в боте Telegram на Python. ⇐ Linux
Поддержка интерактивного ввода через терминал bash в боте Telegram на Python.
Я написал простого бота для Telegram на Python, который работает следующим образом: Пользовательское сообщение — команда, которая будет отправлена на bash-терминал хоста бота с помощью библиотеки подпроцессов. ответ бота - вывод терминала. Я столкнулся с проблемой: невозможно использовать скрипты и инструменты, использующие интерактивный ввод (например, sudo), поэтому мне приходится заходить в терминал.
Вопрос: можно ли сделать подобную поддержку интерактивного ввода и как? Код ниже
подпроцесс импорта из telegram.ext import Updater, CommandHandler, MessageHandler, Filters ТОКЕН = "" def start (обновление, контекст): update.message.reply_text("Первое сообщение.") # Выполнять Защиту выполнения_команды (обновление, контекст): # Получать команда = обновление.сообщение.текст пытаться: # Результат результат = subprocess.check_output(команда, оболочка=True, текст=True) # Отправлять update.message.reply_text(результат) кроме исключения как e: # Ошибок update.message.reply_text(f"Ошибка: {str(e)}") # Основная функция защита основной(): # Программа обновления updater = Updater(TOKEN, use_context=True) dp = updater.dispatcher dp.add_handler(CommandHandler("старт", старт)) dp.add_handler(MessageHandler(Filters.text & ~Filters.command, Execute_command)) updater.start_polling() updater.idle() если имя == "основное": основной() Я думаю, что это можно сделать с помощью библиотеки pexpect, но пока не понимаю, как это сделать.
Я написал простого бота для Telegram на Python, который работает следующим образом: Пользовательское сообщение — команда, которая будет отправлена на bash-терминал хоста бота с помощью библиотеки подпроцессов. ответ бота - вывод терминала. Я столкнулся с проблемой: невозможно использовать скрипты и инструменты, использующие интерактивный ввод (например, sudo), поэтому мне приходится заходить в терминал.
Вопрос: можно ли сделать подобную поддержку интерактивного ввода и как? Код ниже
подпроцесс импорта из telegram.ext import Updater, CommandHandler, MessageHandler, Filters ТОКЕН = "" def start (обновление, контекст): update.message.reply_text("Первое сообщение.") # Выполнять Защиту выполнения_команды (обновление, контекст): # Получать команда = обновление.сообщение.текст пытаться: # Результат результат = subprocess.check_output(команда, оболочка=True, текст=True) # Отправлять update.message.reply_text(результат) кроме исключения как e: # Ошибок update.message.reply_text(f"Ошибка: {str(e)}") # Основная функция защита основной(): # Программа обновления updater = Updater(TOKEN, use_context=True) dp = updater.dispatcher dp.add_handler(CommandHandler("старт", старт)) dp.add_handler(MessageHandler(Filters.text & ~Filters.command, Execute_command)) updater.start_polling() updater.idle() если имя == "основное": основной() Я думаю, что это можно сделать с помощью библиотеки pexpect, но пока не понимаю, как это сделать.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Бот и/или терминал не обрабатывают message.startsWith('goto') на моем боте mineflayer
Anonymous » » в форуме Javascript - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Return ValueError: значение должно быть между 1 и 2**256 - 1 в Telegram-боте Python
Anonymous » » в форуме Python - 0 Ответы
- 38 Просмотры
-
Последнее сообщение Anonymous
-