diff --git a/bot_modules/groups.py b/bot_modules/groups.py new file mode 100644 index 0000000..1707abe --- /dev/null +++ b/bot_modules/groups.py @@ -0,0 +1,136 @@ +# -*- coding: utf8 -*- +# Общественное достояние, 2023, Алексей Безбородов (Alexei Bezborodov) + +# Группы + +from bot_sys import bot_bd, keyboard, user_access, bd_table +from bot_modules import mod_table_operate, mod_simple_message +from bot_modules import access_utils, groups_utils + +# --------------------------------------------------------- +# БД +module_name = 'groups' + +table_name = groups_utils.table_name +key_name = groups_utils.key_name +name_field = groups_utils.name_field +desc_field = groups_utils.desc_field +photo_field = groups_utils.photo_field +access_field = groups_utils.access_field +create_datetime_field = groups_utils.create_datetime_field + +table_name_field = bd_table.TableField(name_field, bd_table.TableFieldDestiny.NAME, bd_table.TableFieldType.STR) + +table = bd_table.Table(table_name, [ + bd_table.TableField(key_name, bd_table.TableFieldDestiny.KEY, bd_table.TableFieldType.INT), + table_name_field, + bd_table.TableField(desc_field, bd_table.TableFieldDestiny.DESC, bd_table.TableFieldType.STR), + bd_table.TableField(photo_field, bd_table.TableFieldDestiny.PHOTO, bd_table.TableFieldType.STR), + bd_table.TableField(access_field, bd_table.TableFieldDestiny.ACCESS, bd_table.TableFieldType.STR), + bd_table.TableField(create_datetime_field, bd_table.TableFieldDestiny.CREATE_DATE, bd_table.TableFieldType.STR), + ], + [ + [table_name_field], + ] + ) + +init_access = f'{user_access.user_access_group_new}=-' + +# --------------------------------------------------------- +# Сообщения и кнопки + +button_names = { + mod_simple_message.ButtonNames.START: "👥 Группы пользователей", + mod_table_operate.ButtonNames.LIST: "📃 Список групп", + mod_table_operate.ButtonNames.ADD: "✅ Добавить группу", + mod_table_operate.ButtonNames.EDIT: "🛠 Редактировать группу", + mod_table_operate.ButtonNames.EDIT_PHOTO: "☐ Изменить изображение в группе", + mod_table_operate.ButtonNames.EDIT_NAME: "≂ Изменить название в группе", + mod_table_operate.ButtonNames.EDIT_DESC: "𝌴 Изменить описание в группе", + mod_table_operate.ButtonNames.EDIT_ACCESS: "✋ Изменить доступ к группе", + mod_table_operate.ButtonNames.DEL: "❌ Удалить группу", +} + +messages = { + mod_simple_message.Messages.START: f''' +{button_names[mod_simple_message.ButtonNames.START]} + +''', + mod_table_operate.Messages.SELECT: ''' +Пожалуйста, выберите группу: +''', + mod_table_operate.Messages.ERROR_FIND: ''' +❌ Ошибка, группу не найден +''', + mod_table_operate.Messages.OPEN: f''' +Группа: #{name_field} + +#{desc_field} + +Время создания: #{create_datetime_field} +''', + mod_table_operate.Messages.CREATE_NAME: ''' +Создание группы. Шаг №1 + +Введите название группы: +''', + mod_table_operate.Messages.CREATE_DESC: ''' +Создание группы. Шаг №2 + +Введите описание группы: +''', + mod_table_operate.Messages.CREATE_PHOTO: ''' +Создание группы. Шаг №3 + +Загрузите обложку для группы (Фото): +Она будет отображаться в его описании. +''', + mod_table_operate.Messages.SUCCESS_CREATE: '''✅ Группа успешно добавлена!''', + mod_table_operate.Messages.START_EDIT: ''' +Пожалуйста, выберите действие: +''', + mod_table_operate.Messages.SELECT_TO_EDIT: ''' +Выберите группу, которого вы хотите отредактировать. +''', + mod_table_operate.Messages.EDIT_PHOTO: ''' +Загрузите новую обложку для группы (Фото): +Она будет отображаться в его описании. +''', + mod_table_operate.Messages.EDIT_NAME: f''' +Текущее название группы: +#{name_field} + +Введите новое название группы: +''', + mod_table_operate.Messages.EDIT_DESC: f''' +Текущее описание группы: +#{desc_field} + +Введите новое описание группы: +''', + mod_table_operate.Messages.EDIT_ACCESS: f''' +Текущий доступ к группе: +#{access_field} + +{user_access.user_access_readme} + +Введите новую строку доступа: +''', + mod_table_operate.Messages.SUCCESS_EDIT: '''✅ Группа успешно отредактирована!''', + mod_table_operate.Messages.SELECT_TO_DELETE: ''' +Выберите группу, который вы хотите удалить. +''', + mod_table_operate.Messages.SUCCESS_DELETE: '''✅ Группа успешно удалена!''', +} + +class ModuleGroups(mod_table_operate.TableOperateModule): + def __init__(self, a_ParentModName, a_ChildModName, a_ChildModuleNameList, a_EditModuleNameList, a_Bot, a_ModuleAgregator, a_BotMessages, a_BotButtons, a_Log): + super().__init__(table, messages, button_names, a_ParentModName, a_ChildModName, init_access, a_ChildModuleNameList, a_EditModuleNameList, a_Bot, a_ModuleAgregator, a_BotMessages, a_BotButtons, a_Log) + + def GetName(self): + return module_name + + def GetInitBDCommands(self): + return super(). GetInitBDCommands() + [ + f"INSERT OR IGNORE INTO {table_name} ({name_field}, {access_field}, {create_datetime_field}) VALUES ('{user_access.user_access_group_new}', '{user_access.user_access_group_new}=-', {bot_bd.GetBDDateTimeNow()});" + ] diff --git a/bot_modules/groups_utils.py b/bot_modules/groups_utils.py index e80e53e..1bc67a0 100644 --- a/bot_modules/groups_utils.py +++ b/bot_modules/groups_utils.py @@ -5,9 +5,23 @@ from bot_sys import user_access +table_name = 'user_groups' +key_name = 'groupID' +name_field = 'groupName' +desc_field = 'groupDesc' +photo_field = 'groupPhoto' +access_field = 'groupAccess' +create_datetime_field = 'groupCreateDateTime' + +table_user_in_groups_name = 'user_in_groups' +user_id_field = 'user_ID' +parent_id_field = 'groupID' + def GetUserGroupData(a_Bot, a_UserID): def GetGroupNamesForUser(a_UserID): - return a_Bot.SQLRequest('SELECT groupName FROM user_groups WHERE group_id=(SELECT group_id FROM user_in_groups WHERE user_id = ?)', param = [a_UserID]) + sql_req = f'SELECT {name_field} FROM {table_name} WHERE {key_name} IN (SELECT {parent_id_field} FROM {table_user_in_groups_name} WHERE {user_id_field} = ?)' + #print('GetGroupNamesForUser', sql_req) + return a_Bot.SQLRequest(sql_req, param = [a_UserID]) r = GetGroupNamesForUser(a_UserID) groups = [] for i in r: diff --git a/bot_modules/mod_table_operate.py b/bot_modules/mod_table_operate.py index 8726ef6..a0cfb86 100644 --- a/bot_modules/mod_table_operate.py +++ b/bot_modules/mod_table_operate.py @@ -123,9 +123,9 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): return self.m_FSMs.get(a_FSMName, None) def GetInitBDCommands(self): - return super(). GetInitBDCommands() + [ + return [ self.m_Table.GetInitTableRequest(), - ] + ] + super().GetInitBDCommands() def GetStartKeyboardButtons(self, a_Message, a_UserGroups): mod_buttons = super().GetStartKeyboardButtons(a_Message, a_UserGroups) @@ -166,10 +166,16 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): return keyboard.MakeInlineKeyboardButtons(self.m_Bot, cur_buttons, a_UserGroups) def GetButtonNameAndKeyValueAndAccess(self, a_Item): + key_name_id = self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.KEY) + name_field_id = self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.NAME) + access_field_id = self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.ACCESS) + assert key_name_id != None + assert name_field_id != None + assert access_field_id != None return \ - a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.NAME)],\ - a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.KEY)],\ - a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.ACCESS)] + a_Item[name_field_id],\ + a_Item[key_name_id],\ + a_Item[access_field_id] def ShowMessageTemplate(self, a_Message, Inline_keyboard_template_func = None): async def ShowMessage(a_CallbackQuery, a_Item): diff --git a/bot_modules/profile.py b/bot_modules/profile.py index bda5c46..8f3aba9 100644 --- a/bot_modules/profile.py +++ b/bot_modules/profile.py @@ -4,7 +4,7 @@ # Профиль пользователя from bot_sys import user_access, bot_bd, bd_table -from bot_modules import mod_simple_message, access, access_utils, groups_utils, users_groups_agregator, users +from bot_modules import mod_simple_message, access, access_utils, groups_utils, users from template import bd_item, simple_message # --------------------------------------------------------- diff --git a/bot_modules/user_in_groups.py b/bot_modules/user_in_groups.py new file mode 100644 index 0000000..da376e6 --- /dev/null +++ b/bot_modules/user_in_groups.py @@ -0,0 +1,174 @@ +# -*- coding: utf8 -*- +# Общественное достояние, 2023, Алексей Безбородов (Alexei Bezborodov) + +# Пользователи в группах + +from bot_sys import bot_bd, keyboard, user_access, bd_table +from bot_modules import mod_table_operate, mod_simple_message +from bot_modules import access_utils, groups_utils +from template import bd_item, bd_item_add + +from aiogram.dispatcher import FSMContext +from aiogram.dispatcher.filters.state import State, StatesGroup + +class FSMAddUserInGroups(StatesGroup): + bd_item = State() + +from enum import Enum +from enum import auto + +# --------------------------------------------------------- +# БД +module_name = 'user_in_groups' + +table_name = groups_utils.table_user_in_groups_name +key_name = 'user_in_groupsID' +name_field = groups_utils.user_id_field +access_field = 'user_in_groupsAccess' +create_datetime_field = 'user_in_groupsCreateDateTime' +parent_id_field = groups_utils.parent_id_field + +table_user_id_field = bd_table.TableField(name_field, bd_table.TableFieldDestiny.NAME, bd_table.TableFieldType.STR) +table_parent_id_field = bd_table.TableField(parent_id_field, bd_table.TableFieldDestiny.PARENT_ID, bd_table.TableFieldType.INT) + +table = bd_table.Table(table_name, [ + bd_table.TableField(key_name, bd_table.TableFieldDestiny.KEY, bd_table.TableFieldType.INT), + table_user_id_field, + bd_table.TableField(access_field, bd_table.TableFieldDestiny.ACCESS, bd_table.TableFieldType.STR), + bd_table.TableField(create_datetime_field, bd_table.TableFieldDestiny.CREATE_DATE, bd_table.TableFieldType.STR), + table_parent_id_field, + ], + [ + [table_user_id_field, table_parent_id_field], + ] + ) + +init_access = f'{user_access.user_access_group_new}=-' + +# --------------------------------------------------------- +# Сообщения и кнопки + +class ButtonNames(Enum): + ADD_USER = auto() + +button_names = { + mod_simple_message.ButtonNames.START: "🗫 Пользователи в группах", + mod_table_operate.ButtonNames.LIST: "📃 Список пользователей в группах", + ButtonNames.ADD_USER: "✅ Добавить пользователя в группу", + mod_table_operate.ButtonNames.EDIT_ACCESS: "✋ Доступ к пользователю в группе", + mod_table_operate.ButtonNames.DEL: "❌ Удалить пользователя из группы", +} + +messages = { + mod_simple_message.Messages.START: f''' +{button_names[mod_simple_message.ButtonNames.START]} + +''', + mod_table_operate.Messages.SELECT: ''' +Пожалуйста, выберите пользователя в группе: +''', + mod_table_operate.Messages.ERROR_FIND: ''' +❌ Ошибка, пользователь в группе не найден +''', + mod_table_operate.Messages.OPEN: f''' +пользователь в группе: #{name_field} + +Группа: #{parent_id_field} + +Время создания: #{create_datetime_field} +''', + mod_table_operate.Messages.CREATE_NAME: ''' +Создание пользователя в группе. + +Укажите ID пользователя: +''', + mod_table_operate.Messages.SUCCESS_CREATE: '''✅ Пользователь успешно добавлен в группу!''', + mod_table_operate.Messages.START_EDIT: ''' +Пожалуйста, выберите действие: +''', + mod_table_operate.Messages.SELECT_TO_EDIT: ''' +Выберите пользователя в группе, которого вы хотите отредактировать. +''', + mod_table_operate.Messages.EDIT_ACCESS: f''' +Текущий доступ к пользователю в группе: +#{access_field} + +{user_access.user_access_readme} + +Введите новую строку доступа: +''', + mod_table_operate.Messages.SUCCESS_EDIT: '''✅ Пользователь в группе успешно отредактирован!''', + mod_table_operate.Messages.SELECT_TO_DELETE: ''' +Выберите пользователя в группе, которого вы хотите удалить. +''', + mod_table_operate.Messages.SUCCESS_DELETE: '''✅ Пульзователь успешно удалён из группы!''', +} + +class ModuleUserInGroups(mod_table_operate.TableOperateModule): + def __init__(self, a_ParentModName, a_ChildModName, a_ChildModuleNameList, a_EditModuleNameList, a_Bot, a_ModuleAgregator, a_BotMessages, a_BotButtons, a_Log): + super().__init__(table, messages, button_names, a_ParentModName, a_ChildModName, init_access, a_ChildModuleNameList, a_EditModuleNameList, a_Bot, a_ModuleAgregator, a_BotMessages, a_BotButtons, a_Log) + + def GetName(self): + return module_name + + def GetStartKeyboardButtons(self, a_Message, a_UserGroups): + t_buttons = super().GetStartKeyboardButtons(a_Message, a_UserGroups) + cur_buttons = [ + keyboard.ButtonWithAccess(self.GetButton(ButtonNames.ADD_USER), user_access.AccessMode.ADD, self.GetAccess()), + ] + return t_buttons + keyboard.MakeButtons(self.m_Bot, cur_buttons, a_UserGroups) + + def AddBDItemFunc(self, a_ItemData, a_UserID): + def_access = access_utils.GetItemDefaultAccessForModule(self.m_Bot, self.GetName()) + res, error = self.m_Bot.SQLRequest(f'INSERT INTO {table_name}({name_field}, {access_field}, {parent_id_field}, {create_datetime_field}) VALUES(?, ?, ?, {bot_bd.GetBDDateTimeNow()})', + commit = True, return_error = True, param = (a_ItemData[name_field], def_access + f";{a_UserID}=+", a_ItemData[parent_id_field])) + + self.OnChange() + if error: + self.m_Log.Error(f'Пользоватлель {a_UserID}. Ошибка добавления записи в таблицу {table_name} ({a_ItemData[name_field]}, {def_access}).') + else: + self.m_Log.Success(f'Пользоватлель {a_UserID}. Добавлена запись в таблицу {table_name} ({a_ItemData[name_field]}, {def_access}).') + + return res, error + + def RegisterHandlers(self): + super().RegisterHandlers() + GetButtonNameAndKeyValueAndAccess = self.m_GetButtonNameAndKeyValueAndAccessFunc + GetAccess = self.m_GetAccessFunc + + defaul_keyboard_func = self.m_GetStartKeyboardButtonsFunc + + parent_table_name = None + parent_key_name = None + if self.m_ParentModName: + parent_mod = self.GetModule(self.m_ParentModName) + parent_table_name = parent_mod.m_Table.GetName() + parent_key_name = parent_mod.m_Table.GetFieldNameByDestiny(bd_table.TableFieldDestiny.KEY) + + # Добавление + a_ButtonName = self.GetButton(ButtonNames.ADD_USER) + if a_ButtonName: + a_Prefix = self.RegisterSelect(a_ButtonName, user_access.AccessMode.ADD, only_parent = True) + + check_func = bd_item.GetCheckForTextFunc(a_ButtonName) + if a_Prefix: + check_func = bd_item.GetCheckForPrefixFunc(a_Prefix) + + bd_item_add.AddBDItem1RegisterHandlers(self.m_Bot,\ + check_func,\ + FSMAddUserInGroups,\ + self.m_AddBDItemFunc,\ + self.ShowMessageTemplate(self.GetMessage(mod_table_operate.Messages.CREATE_NAME)),\ + self.ShowMessageTemplate(self.GetMessage(mod_table_operate.Messages.SUCCESS_CREATE)),\ + a_Prefix,\ + parent_table_name,\ + parent_key_name,\ + name_field,\ + GetButtonNameAndKeyValueAndAccess,\ + GetAccess,\ + defaul_keyboard_func,\ + bd_item.FieldType.text,\ + access_mode = user_access.AccessMode.ADD\ + ) + + diff --git a/bot_modules/users.py b/bot_modules/users.py index 2389d98..1fcd569 100644 --- a/bot_modules/users.py +++ b/bot_modules/users.py @@ -1,11 +1,11 @@ # -*- coding: utf8 -*- # Общественное достояние, 2023, Алексей Безбородов (Alexei Bezborodov) -# Проекты +# Пользователи from bot_sys import bot_bd, keyboard, user_access, bd_table from bot_modules import mod_table_operate, mod_simple_message -from bot_modules import users_groups_agregator, access_utils, groups_utils +from bot_modules import access_utils, groups_utils, groups, user_in_groups # --------------------------------------------------------- # БД @@ -34,7 +34,7 @@ table = bd_table.Table(table_name, [ bd_table.TableField(create_datetime_field, bd_table.TableFieldDestiny.CREATE_DATE, bd_table.TableFieldType.STR), ]) -init_access = f'{user_access.user_access_group_new}=-' +init_access = f'{user_access.user_access_group_new}=v' # --------------------------------------------------------- # Сообщения и кнопки @@ -71,8 +71,6 @@ messages = { Имя2: #{name2_field} Код языка: #{language_code_field} Дата добавления: #{create_datetime_field} - -Время создания: #{create_datetime_field} ''', mod_table_operate.Messages.CREATE_NAME: ''' Создание пользователя. Шаг №1 @@ -146,10 +144,10 @@ def AddUser(a_Bot, a_UserID, a_UserName, a_UserName1, a_UserName2, a_UserIsBot, user_groups = groups_utils.GetUserGroupData(a_Bot, a_UserID) # Если пользователь не состоит ни в одной группе, то добавляем его в группу user_access.user_access_group_new if len(user_groups.group_names_list) == 0: - new_group_id = a_Bot.SQLRequest(f'SELECT {users_groups_agregator.key_table_groups_name} FROM {users_groups_agregator.table_groups_name} WHERE {users_groups_agregator.name_table_groups_field} = ?', + new_group_id = a_Bot.SQLRequest(f'SELECT {groups.key_name} FROM {groups.table_name} WHERE {groups.name_field} = ?', param = [user_access.user_access_group_new]) if new_group_id and new_group_id[0]: - a_Bot.SQLRequest(f"INSERT OR IGNORE INTO {users_groups_agregator.table_user_in_groups_name} ({users_groups_agregator.user_id_field}, {users_groups_agregator.key_table_groups_name}, {users_groups_agregator.access_field}, {users_groups_agregator.create_datetime_field}) VALUES (?, ?, ?, {bot_bd.GetBDDateTimeNow()});", + a_Bot.SQLRequest(f"INSERT OR IGNORE INTO {user_in_groups.table_name} ({user_in_groups.name_field}, {user_in_groups.parent_id_field}, {user_in_groups.access_field}, {user_in_groups.create_datetime_field}) VALUES (?, ?, ?, {bot_bd.GetBDDateTimeNow()});", commit=True, param = (a_UserID, new_group_id[0][0], access_utils.GetItemDefaultAccessForModule(a_Bot, module_name))) def GetUserInfo(a_Bot, a_UserID): diff --git a/bot_modules/users_groups_agregator.py b/bot_modules/users_groups_agregator.py index d98146e..0f4f3bc 100644 --- a/bot_modules/users_groups_agregator.py +++ b/bot_modules/users_groups_agregator.py @@ -4,7 +4,7 @@ # Группы пользователей from bot_sys import keyboard, user_access, bot_bd -from bot_modules import mod_simple_message +from bot_modules import mod_simple_message, users, groups, user_in_groups from template import simple_message, sql_request, bd_item from aiogram.dispatcher import FSMContext @@ -17,28 +17,19 @@ class FSMRequestToBD(StatesGroup): # БД module_name = 'users_groups_agregator' -table_groups_name = 'user_groups' -table_user_in_groups_name = 'user_in_groups' - -key_table_groups_name = 'group_id' -name_table_groups_field = 'groupName' -user_id_field = 'user_id' -access_field = 'access' -create_datetime_field = 'createDateTime' - # --------------------------------------------------------- # Сообщения -request_start_message = ''' +request_start_message = f''' **Задайте запрос к БД** Можете воспользоваться следующими шаблонами: -1. `SELECT * FROM users` - Все пользователи -2. `SELECT group_id, groupName FROM user_groups` - Все группы пользоватлей -3. `INSERT INTO user_groups(groupName) VALUES('GROUPNAME')` - добавление группы с именем GROUPNAME -4. `SELECT group_id FROM user_in_groups WHERE user_id = USERID`- Все ID групп в которых состоит пользователь с USERID -5. `SELECT groupName FROM user_groups WHERE group_id=(SELECT groupid FROM user_in_groups WHERE user_id = USERID)` - Все имена групп пользователя с USERID -6. `INSERT INTO user_in_groups(user_id, group_id) VALUES(USERID, GROUPID)` - добавление пользователя USERID в группу с GROUPID +1. `SELECT * FROM {users.table_name}` - Все пользователи +2. `SELECT {groups.key_name}, {groups.name_field} FROM {groups.table_name}` - Все группы пользоватлей +3. `INSERT INTO {groups.table_name}({groups.name_field}) VALUES('GROUPNAME')` - добавление группы с именем GROUPNAME +4. `SELECT {user_in_groups.parent_id_field} FROM {user_in_groups.table_name} WHERE {user_in_groups.name_field} = USERID`- Все ID групп в которых состоит пользователь с USERID +5. `SELECT {groups.name_field} FROM {groups.table_name} WHERE {groups.name_field}=(SELECT groupid FROM {user_in_groups.table_name} WHERE {user_in_groups.name_field} = USERID)` - Все имена групп пользователя с USERID +6. `INSERT INTO {user_in_groups.table_name}({user_in_groups.name_field}, {user_in_groups.parent_id_field}) VALUES(USERID, GROUPID)` - добавление пользователя USERID в группу с GROUPID ''' help_message = ''' @@ -81,26 +72,6 @@ class ModuleUsersGroupsAgregator(mod_simple_message.SimpleMessageModule): self.m_GetAccessFunc ) - def GetInitBDCommands(self): - return super(). GetInitBDCommands() + [ - f"""CREATE TABLE IF NOT EXISTS {table_groups_name}( - {key_table_groups_name} INTEGER PRIMARY KEY NOT NULL, - {name_table_groups_field} TEXT, - {access_field} TEXT, - {create_datetime_field} TEXT, - UNIQUE({key_table_groups_name}), - UNIQUE({name_table_groups_field}) - );""", - f"""CREATE TABLE IF NOT EXISTS {table_user_in_groups_name}( - {user_id_field} INTEGER, - {key_table_groups_name} INTEGER, - {access_field} TEXT, - {create_datetime_field} TEXT, - UNIQUE({user_id_field}, {key_table_groups_name}) - );""", - f"INSERT OR IGNORE INTO {table_groups_name} ({name_table_groups_field}, {access_field}, {create_datetime_field}) VALUES ('{user_access.user_access_group_new}', '{user_access.user_access_group_new}=-', {bot_bd.GetBDDateTimeNow()});" - ] - def GetName(self): return module_name diff --git a/bot_sys/keyboard.py b/bot_sys/keyboard.py index c598ca5..ecf888b 100644 --- a/bot_sys/keyboard.py +++ b/bot_sys/keyboard.py @@ -40,6 +40,7 @@ def MakeButtons(a_Bot, a_ButtonList : [ButtonWithAccess], a_UserGroups): if not b.label: continue label = str(b.label) + #print('MakeButtons', a_Bot.GetRootIDs(), b.access_string, a_UserGroups.user_id, a_UserGroups.group_names_list, b.access_mode) if user_access.CheckAccess(a_Bot.GetRootIDs(), b.access_string, a_UserGroups, b.access_mode): buttons += [types.KeyboardButton(label)] step = GetButtonInRowCount(len(buttons)) diff --git a/main.py b/main.py index bbbd0cf..86c6f2e 100644 --- a/main.py +++ b/main.py @@ -4,7 +4,8 @@ import os from bot_sys import config, log, aiogram_bot, bot_messages, bd_table, user_access -from bot_modules import mod_agregator, start, profile, backup, users_groups_agregator, access, projects, tasks, needs, comments, languages, messages, buttons, users +from bot_modules import mod_agregator, start, profile, backup, users_groups_agregator, access, projects, tasks, needs, comments +from bot_modules import languages, messages, buttons, users, groups, user_in_groups log_start_message = 'Бот успешно запущен!' @@ -31,6 +32,8 @@ mod_languages_name = languages.module_name mod_messages_name = messages.module_name mod_buttons_name = buttons.module_name mod_users_name = users.module_name +mod_groups_name = groups.module_name +mod_user_in_groups_name = user_in_groups.module_name start_mod_list = [mod_start_name] mod_access = access.ModuleAccess(start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log) @@ -39,7 +42,14 @@ g_ModuleAgregator.AddModule(mod_access) mod_users = users.ModuleUsers(None, None, start_mod_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log) g_ModuleAgregator.AddModule(mod_users) -child_mod_name_list = [mod_start_name, mod_users_name] +child_mod_name_list = [mod_start_name, mod_users_name, mod_user_in_groups_name] +mod_groups = groups.ModuleGroups(None, mod_user_in_groups_name, child_mod_name_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log) +g_ModuleAgregator.AddModule(mod_groups) + +mod_user_in_groups = user_in_groups.ModuleUserInGroups(mod_groups_name, None, start_mod_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log) +g_ModuleAgregator.AddModule(mod_user_in_groups) + +child_mod_name_list = [mod_start_name, mod_users_name, mod_groups_name, mod_user_in_groups_name] mod_users_groups_agregator = users_groups_agregator.ModuleUsersGroupsAgregator(child_mod_name_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log) g_ModuleAgregator.AddModule(mod_users_groups_agregator) diff --git a/template/simple_message.py b/template/simple_message.py index 7da195b..0b2f013 100644 --- a/template/simple_message.py +++ b/template/simple_message.py @@ -3,7 +3,7 @@ # Простые информационные сообщения -from bot_sys import user_access +from bot_sys import user_access, bot_messages from bot_modules import access_utils, groups_utils from aiogram import types