# -*- coding: utf8 -*- # Общественное достояние 2023, Алексей Безбородов (Alexei Bezborodov) # Права пользователей from bot_sys import bot_bd, log, config, keyboard, user_access from bot_modules import start, groups from aiogram import Bot, types import sqlite3 from aiogram.dispatcher import Dispatcher bot = Bot(token=config.GetTelegramBotApiToken(), parse_mode=types.ParseMode.HTML) # --------------------------------------------------------- # БД table_name = 'module_access' module_name = 'access' init_bd_cmds = [f"""CREATE TABLE IF NOT EXISTS {table_name}( modName TEXT, modAccess TEXT, UNIQUE(modName) );""", f"INSERT OR IGNORE INTO {table_name} (modName, modAccess) VALUES ('{module_name}', 'other=-');" ] # --------------------------------------------------------- # Сообщения access_start_message = ''' Права пользователей находятся в стадии разработки Пока можете воспользоваться хардкорным способом через запросы к БД ''' request_start_message = ''' **Задайте запрос к БД** Можете воспользоваться следующими шаблонами: 1. `SELECT * FROM users` - Все пользователи 2. `SELECT * FROM module_access` - Все права к модулям 3. `UPDATE module_access SET modAccess = 'NEWACCESS' WHERE modName = 'MODNAME'` - Задать новые права NEWACCESS для модуля MODNAME ''' help_message = ''' Существует БД для работы с правами `module_access (modName, modAccess)` - содержит права для модулей modAccess - строка ''' + user_access.user_access_readme access_button_name = "📰 Доступ пользователей" sql_request_button_name = "📰 Запрос к БД для редактирования доступа" help_button_name = "📰 Информация по редактированию доступа" # --------------------------------------------------------- # Работа с кнопками def GetEditAccessKeyboardButtons(a_UserAccess): cur_buttons = [sql_request_button_name, help_button_name] mods = [start] return keyboard.MakeKeyboard(keyboard.GetButtons(mods, a_UserAccess) + cur_buttons) # --------------------------------------------------------- # Обработка сообщений # Приветствие async def AccessStart(a_Message): user_id = str(a_Message.from_user.id) user_access = GetUserAccess(a_Message.from_user.id) await bot.send_message(user_id, access_start_message, reply_markup = GetEditAccessKeyboardButtons(user_access)) # --------------------------------------------------------- # Работа с базой данных def GetModAccessList(): return bot_db.SelectBDTemplate(table_name)() # --------------------------------------------------------- # API def GetUserAccess(a_UserID): return None # Инициализация БД def GetInitBDCommands(): return init_bd_cmds # Доступные кнопки def GetButtonNames(a_UserAccess): return [access_button_name] # Обработка кнопок def RegisterHandlers(dp : Dispatcher): dp.register_message_handler(AccessStart, text = access_button_name) dp.register_message_handler(groups.RequestToBDTemplate(request_start_message), text = sql_request_button_name) dp.register_message_handler(groups.HelpTemplate(help_message, GetEditAccessKeyboardButtons), text = help_button_name)