You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
3.9 KiB
65 lines
3.9 KiB
# -*- coding: utf8 -*- |
|
# Общественное достояние, 2023, Алексей Безбородов (Alexei Bezborodov) <AlexeiBv+mirocod_platform_bot@narod.ru> |
|
|
|
# Сообщения для работы с sql запросами |
|
|
|
from bot_sys import user_access, keyboard, bot_messages, interfaces |
|
from bot_modules import groups_utils |
|
from template import bd_item, simple_message |
|
|
|
canсel_button_name = "🚫 Отменить" |
|
|
|
cancel_message = ''' |
|
🚫 Запрос к БД отменён |
|
''' |
|
|
|
def GetCancelKeyboardButtonsTemplate(a_Bot, a_AccessFunc, a_AccessMode): |
|
def GetCancelKeyboardButtons(a_Message, a_UserGroups): |
|
print ('canсel_button_name', canсel_button_name) |
|
cur_buttons = [ |
|
keyboard.ButtonWithAccess(canсel_button_name, a_AccessMode, a_AccessFunc()) |
|
] |
|
return keyboard.MakeButtons(a_Bot, cur_buttons, a_UserGroups) |
|
return GetCancelKeyboardButtons |
|
|
|
def RequestToBDTemplate(a_Bot, a_StartMessage, a_GetButtonsFunc, a_AccessFunc, a_FSM, a_AccessMode): |
|
async def RequestToBDStart(a_Message): |
|
user_id = str(a_Message.from_user.id) |
|
user_groups = groups_utils.GetUserGroupData(a_Bot, user_id) |
|
if not user_access.CheckAccess(a_Bot.GetRootIDs(), a_AccessFunc(), user_groups, a_AccessMode): |
|
return await simple_message.AccessDeniedMessage(a_Bot, a_GetButtonsFunc, user_id, a_Message, user_groups) |
|
|
|
await a_FSM.sqlRequest.set() |
|
print ('a_FSM.sqlRequest.set()', a_StartMessage) |
|
await simple_message.SendMessage(a_Bot, a_StartMessage, GetCancelKeyboardButtonsTemplate(a_Bot, a_AccessFunc, a_AccessMode), None, user_id, a_Message, user_groups, parse_mode=interfaces.ParseMode.Markdown.value) |
|
return RequestToBDStart |
|
|
|
def RequestToBDFinishTemplate(a_Bot, a_GetButtonsFunc, a_AccessFunc, a_AccessMode): |
|
async def RequestToBDFinish(a_Message, state): |
|
user_id = str(a_Message.from_user.id) |
|
user_groups = groups_utils.GetUserGroupData(a_Bot, user_id) |
|
if not user_access.CheckAccess(a_Bot.GetRootIDs(), a_AccessFunc(), user_groups, a_AccessMode): |
|
return await simple_message.AccessDeniedMessage(a_Bot, a_GetButtonsFunc, user_id, a_Message, user_groups) |
|
|
|
result = '' |
|
async with state.proxy() as prjData: |
|
if a_Message.text == canсel_button_name: |
|
await state.finish() |
|
return await simple_message.SendMessage(a_Bot, bot_messages.MakeBotMessage(cancel_message), a_GetButtonsFunc, None, user_id, a_Message, user_groups) |
|
|
|
sql_request = a_Message.text |
|
a_Bot.GetLog().Success(f'Сделан запрос [{sql_request}] пользователем {a_Message.from_user.id}.') |
|
result, error = a_Bot.SQLRequest(sql_request, commit = True, return_error = True) |
|
if not error is None: |
|
a_Bot.GetLog().Error(f'Ошибка при выполнении запроса [{sql_request}] от пользователя {a_Message.from_user.id} ответ следующий [{str(error)}].') |
|
result = str(error) |
|
else: |
|
a_Bot.GetLog().Success(f'Результат запроса [{sql_request}] от пользователя {a_Message.from_user.id} следующий [{result}].') |
|
await state.finish() |
|
await simple_message.SendMessage(a_Bot, bot_messages.MakeBotMessage(str(result)), a_GetButtonsFunc, None, user_id, a_Message, user_groups) |
|
|
|
return RequestToBDFinish |
|
|
|
def RequestToBDRegisterHandlers(a_Bot, a_RequestButtonName, a_RequestStartMessage, a_FSM, a_GetButtonsFunc, a_AccessMode, a_AccessFunc): |
|
a_Bot.RegisterMessageHandler(RequestToBDTemplate(a_Bot, a_RequestStartMessage, a_GetButtonsFunc, a_AccessFunc, a_FSM, a_AccessMode), bd_item.GetCheckForTextFunc(a_RequestButtonName)) |
|
a_Bot.RegisterMessageHandler(RequestToBDFinishTemplate(a_Bot, a_GetButtonsFunc, a_AccessFunc, a_AccessMode), None, state = a_FSM.sqlRequest)
|
|
|