import subprocess from aiogram.types import Message, CallbackQuery from app import views from app.callbacks.callback_docker import ContainerCallback, ActionCallback from app.keyboards.docker_keyboards import container_names_keyboard, container_actions_keyboard from app.utils.text_splitter import split_text async def get_containers(message: Message): sub = subprocess.check_output("docker ps -a", shell=True).decode() messages = split_text(sub) for m in messages: await message.answer( text=f"
{m}
", parse_mode="HTML", ) keyboard = container_names_keyboard(sub) await message.answer(text="Выберите контейнер:", reply_markup=keyboard.as_markup()) async def container_actions(callback: CallbackQuery, callback_data: ContainerCallback): name = callback_data.name keyboard = container_actions_keyboard(name) await callback.message.answer( text=f"Выберите действие для контейнера {name}", parse_mode="HTML", reply_markup=keyboard.as_markup() ) async def do_container_action(callback: CallbackQuery, callback_data: ActionCallback): action, name = callback_data.name, callback_data.action subprocess.run(f"docker {action} {name}", shell=True) message = views.actions.get(action).format(name) await callback.message.answer( text=message, )