Skip to content

Commit

Permalink
Сократил код, вынес проверку главного меню в отдельный модуль
Browse files Browse the repository at this point in the history
  • Loading branch information
teanus committed Jun 14, 2024
1 parent d9a843c commit b07971a
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 60 deletions.
71 changes: 26 additions & 45 deletions handlers/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
from aiogram.dispatcher.filters import Text
from aiogram.dispatcher.filters.state import State, StatesGroup

from keyboards import kb_admin, kb_client
from keyboards import kb_admin, kb_client, get_main_menu
from logger.group_logger import groups_logger
from logger.log import logger
from minecraft import rcon
Expand All @@ -33,16 +33,10 @@ class FsmOther(StatesGroup):
async def rcon_cmd(message: types.Message) -> None:
chat_id = message.chat.id
user_id = message.from_user.id
if await db.check_admin_user(chat_id):
logger.info(
f"Пользователь с id {user_id} вошел в rcon консоль с правами администратора"
)
await message.reply("Теперь пришли команду", reply_markup=kb_client.rcon_cancel)
await FsmOther.rcon.set()
elif await db.user_exists(chat_id):
logger.info(
f"Пользователь с id {user_id} вошел в rcon консоль с правами \"normal\""
)
is_admin = await db.check_admin_user(chat_id)
if is_admin or await db.user_exists(chat_id):
role = "администратора" if is_admin else '"normal"'
logger.info(f"Пользователь с id {user_id} вошел в rcon консоль с правами {role}")
await message.reply("Теперь пришли команду", reply_markup=kb_client.rcon_cancel)
await FsmOther.rcon.set()
else:
Expand All @@ -51,47 +45,34 @@ async def rcon_cmd(message: types.Message) -> None:

async def cancel_state_rcon(message: types.Message, state: FSMContext) -> None:
chat_id = message.chat.id
if await db.check_admin_user(chat_id):
await message.reply(
"Ты вышел из консоли. Прикажи что исполнять!",
reply_markup=kb_admin.main_menu,
)
await state.finish()
else:
await message.reply(
"Ты вышел из консоли. Каковы будут дальнейшие действия?",
reply_markup=kb_client.main_menu,
)
await state.finish()
main_menu = await get_main_menu(chat_id)
text = (
"Ты вышел из консоли. Прикажи что исполнять!"
if await db.check_admin_user(chat_id)
else "Ты вышел из консоли. Каковы будут дальнейшие действия?"
)
await message.reply(text, reply_markup=main_menu)
await state.finish()


async def get_command(message: types.Message) -> None:
chat_id = message.chat.id
user_id = message.from_user.id
low = message.text.lower()
command = low.split(" ", 1)
user_id = message.from_user.id
if not await db.check_admin_user(chat_id):
if await db.command_exists(command[0]):
logger.info(
f"Пользователь с id {user_id} попытался выполнить заблокированную команду"
)
await groups_logger("RCON: ", user_id, message.text)
await message.reply("Команда заблокирована! Используйте другую:)")
else:
logger.info(f"Пользователь с id {user_id} выполнил команду: {message.text}")
await groups_logger("RCON: ", user_id, message.text)
await message.reply(
f"Команда выполнена. Ответ сервера:\n{rcon.command_execute(low)}"
)
await message.answer(
"Вы можете продолжить выполнять команды. Просто пришлите мне их. Или введите отмена"
)
await FsmOther.rcon.set()

if not await db.check_admin_user(chat_id) and await db.command_exists(command[0]):
logger.info(f"Пользователь с id {user_id} попытался выполнить заблокированную команду")
await groups_logger("RCON: ", user_id, message.text)
await message.reply("Команда заблокирована! Используйте другую:)")
else:
await message.reply(
f"Команда выполнена. Ответ сервера:\n{rcon.command_execute(low)}"
)
logger.info(f"Администратор с id {user_id} выполнил команду: {message.text}")
result = rcon.command_execute(low)
role = "Администратор" if await db.check_admin_user(chat_id) else "Пользователь"
logger.info(f"{role} с id {user_id} выполнил команду: {message.text}")
await groups_logger("RCON: ", user_id, message.text)
await message.reply(f"Команда выполнена. Ответ сервера:\n{result}")
await message.answer("Вы можете продолжить выполнять команды. Просто пришлите мне их. Или введите отмена")
await FsmOther.rcon.set()


def register_handlers_client(dp: Dispatcher) -> None:
Expand Down
26 changes: 11 additions & 15 deletions handlers/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,23 @@

from aiogram import Dispatcher, types

from keyboards import kb_admin, kb_client, kb_other
from keyboards import kb_admin, kb_client, kb_other, get_main_menu
from provider import db


async def start(message: types.Message):
chat_id = message.chat.id
if await db.check_admin_user(chat_id):
await message.reply(
"Привет друг! О, ты же админ! Так начни управлять.",
reply_markup=kb_admin.main_menu,
)
elif await db.user_exists(chat_id):
await message.reply(
"Привет друг. У тебя есть доступ к консоли, удачи!",
reply_markup=kb_client.main_menu,
)
else:
await message.reply(
"Привет друг! Введи /info для отображения информации о боте!",
reply_markup=kb_other.main_menu,
menu = await get_main_menu(chat_id)
text = (
"Привет друг! О, ты же админ! Так начни управлять."
if await db.check_admin_user(chat_id)
else (
"Привет друг. У тебя есть доступ к консоли, удачи!"
if await db.user_exists(chat_id)
else "Привет друг! Введи /info для отображения информации о боте!"
)
)
await message.reply(text, reply_markup=menu)


def register_handlers_common(dp: Dispatcher):
Expand Down
1 change: 1 addition & 0 deletions keyboards/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@


from keyboards import kb_admin, kb_client, kb_other
from keyboards.main_menu import get_main_menu

0 comments on commit b07971a

Please sign in to comment.