Browse Source

Комментарии работают.

pull/2/head
Alexei 2 years ago
parent
commit
4cdffe68b9
  1. 388
      bot_modules/comments.py
  2. 4
      bot_modules/projects.py
  3. 14
      main.py
  4. 1
      template/bd_item_add.py

388
bot_modules/comments.py

@ -3,26 +3,27 @@
# Комментарии # Комментарии
from bot_sys import bot_bd, log, keyboard, user_access from bot_sys import bot_bd, keyboard, user_access, user_messages, bd_table
from bot_modules import start, access, groups, projects, tasks, needs from bot_modules import mod_table_operate
from template import bd_item_view, simple_message, bd_item_delete, bd_item_edit, bd_item, bd_item_add, bd_item_select
from aiogram import types
from aiogram.dispatcher import FSMContext from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher import Dispatcher
import sqlite3
class FSMCreateComment(StatesGroup): class FSMCreateComment(StatesGroup):
bd_item = State() name = State()
desc = State()
photo = State()
class FSMEditCommentPhotoItem(StatesGroup):
item_field = State()
class FSMEditCommentNameItem(StatesGroup):
item_field = State()
class FSMEditCommentDescItem(StatesGroup): class FSMEditCommentDescItem(StatesGroup):
item_id = State()
item_field = State() item_field = State()
class FSMEditCommentAccessItem(StatesGroup): class FSMEditCommentAccessItem(StatesGroup):
item_id = State()
item_field = State() item_field = State()
# --------------------------------------------------------- # ---------------------------------------------------------
# БД # БД
@ -30,302 +31,117 @@ module_name = 'comments'
table_name = module_name table_name = module_name
key_name = 'commentID' key_name = 'commentID'
name_field = 'commentName'
desc_field = 'commentDesc' desc_field = 'commentDesc'
photo_field = 'commentPhoto'
access_field = 'commentAccess' access_field = 'commentAccess'
create_datetime_field = 'commentCreateDateTime' create_datetime_field = 'commentCreateDateTime'
parent_id_field = 'needID' parent_id_field = 'needID'
init_bd_cmds = [f'''CREATE TABLE IF NOT EXISTS {table_name}( table = bd_table.Table(table_name, [
{key_name} INTEGER PRIMARY KEY, bd_table.TableField(key_name, bd_table.TableFieldDestiny.KEY, bd_table.TableFieldType.INT),
{desc_field} TEXT, bd_table.TableField(name_field, bd_table.TableFieldDestiny.NAME, bd_table.TableFieldType.STR),
{access_field} TEXT, bd_table.TableField(desc_field, bd_table.TableFieldDestiny.DESC, bd_table.TableFieldType.STR),
{create_datetime_field} TEXT, bd_table.TableField(photo_field, bd_table.TableFieldDestiny.PHOTO, bd_table.TableFieldType.STR),
{parent_id_field} INTEGER 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),
f"INSERT OR IGNORE INTO module_access (modName, modAccess, itemDefaultAccess) VALUES ('{module_name}', '{user_access.user_access_group_new}=va', '{user_access.user_access_group_new}=va');" bd_table.TableField(parent_id_field, bd_table.TableFieldDestiny.PARENT_ID, bd_table.TableFieldType.INT),
] ])
select_comments_prefix = ''
# ---------------------------------------------------------
# Сообщения
comments_button_name = "⚏ Комментарии" init_access = f'{user_access.user_access_group_new}=va'
base_comment_message = f'''
<b>{comments_button_name}</b>
''' fsm = mod_table_operate.FSMs(FSMCreateComment, FSMEditCommentNameItem, FSMEditCommentDescItem, FSMEditCommentPhotoItem, FSMEditCommentAccessItem)
list_comment_button_name = "📃 Список комментариев" # ---------------------------------------------------------
select_comment_message = ''' # Сообщения и кнопки
button_names = {
mod_table_operate.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_table_operate.Messages.START: f'''
<b>{button_names[mod_table_operate.ButtonNames.START]}</b>
''',
mod_table_operate.Messages.SELECT: '''
Пожалуйста, выберите комментарий: Пожалуйста, выберите комментарий:
''' ''',
mod_table_operate.Messages.ERROR_FIND: '''
error_find_proj_message = '''
Ошибка, комментарий не найден Ошибка, комментарий не найден
''' ''',
mod_table_operate.Messages.OPEN: f'''
comment_open_message = f''' <b>Комментарий: #{name_field}</b>
<b>Комментарий</b>
#{desc_field} #{desc_field}
Время создания: #{create_datetime_field} Время создания: #{create_datetime_field}
''' ''',
mod_table_operate.Messages.CREATE_NAME: '''
# Создание комментариев Создание комментария. Шаг 1
add_comment_button_name = "☑ Добавить комментарий" Введите название комментария:
comment_create_desc_message = ''' ''',
Введите свой комментарий: mod_table_operate.Messages.CREATE_DESC: '''
''' Создание комментария. Шаг 2
comment_success_create_message = '''✅ Комментарий успешно добавлен!''' Введите описание комментария:
''',
# Редактирование комментариев. mod_table_operate.Messages.CREATE_PHOTO: '''
Создание комментария. Шаг 3
edit_comment_button_name = "🛠 Редактировать комментарий"
comment_start_edit_message= ''' Загрузите обложку для комментария (Фото):
Она будет отображаться в его описании.
''',
mod_table_operate.Messages.SUCCESS_CREATE: '''✅ Комментарий успешно добавлен!''',
mod_table_operate.Messages.START_EDIT: '''
Пожалуйста, выберите действие: Пожалуйста, выберите действие:
''' ''',
mod_table_operate.Messages.SELECT_TO_EDIT: '''
comment_select_to_edit_message = '''
Выберите комментарий, который вы хотите отредактировать. Выберите комментарий, который вы хотите отредактировать.
''' ''',
mod_table_operate.Messages.EDIT_PHOTO: '''
edit_comment_desc_button_name = "𝌴 Изменить комментарий" Загрузите новую обложку для комментария (Фото):
comment_edit_desc_message = f''' Она будет отображаться в его описании.
Текущий комментарий: ''',
mod_table_operate.Messages.EDIT_NAME: f'''
Текущее название комментария:
#{name_field}
Введите новое название комментария:
''',
mod_table_operate.Messages.EDIT_DESC: f'''
Текущее описание комментария:
#{desc_field} #{desc_field}
Введите отредактированный комментарий: Введите новое описание комментария:
''' ''',
mod_table_operate.Messages.EDIT_ACCESS: f'''
edit_comment_access_button_name = "✋ Изменить доступ к комментарию" Текущий доступ к комментарийу:
comment_edit_access_message = f'''
Текущий доступ к комментарию:
#{access_field} #{access_field}
{user_access.user_access_readme} {user_access.user_access_readme}
Введите новую строку доступа: Введите новую строку доступа:
''' ''',
mod_table_operate.Messages.SUCCESS_EDIT: '''✅ Комментарий успешно отредактирован!''',
comment_success_edit_message = '''✅ Комментарий успешно отредактирован!''' mod_table_operate.Messages.SELECT_TO_DELETE: '''
Выберите комментарий, который вы хотите удалить.
# Удаление комментариев ''',
mod_table_operate.Messages.SUCCESS_DELETE: '''✅ Комментарий успешно удалён!''',
del_comment_button_name = "❌ Удалить комментарий" }
comment_select_to_delete_message = '''
Выберите комментарий, которую вы хотите удалить. class ModuleComments(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, fsm, a_ParentModName, a_ChildModName, init_access, a_ChildModuleNameList, a_EditModuleNameList, a_Bot, a_ModuleAgregator, a_BotMessages, a_BotButtons, a_Log)
comment_success_delete_message = '''✅ Комментарий успешно удалён!'''
def GetName(self):
# --------------------------------------------------------- return module_name
# Работа с кнопками
def GetEditCommentKeyboardButtons(a_Message, a_UserGroups):
cur_buttons = GetModuleButtons() + [
keyboard.ButtonWithAccess(edit_comment_desc_button_name, user_access.AccessMode.EDIT, GetAccess()),
keyboard.ButtonWithAccess(edit_comment_access_button_name, user_access.AccessMode.ACCEES_EDIT, GetAccess()),
]
mods = [start]
return keyboard.MakeKeyboard(keyboard.GetButtons(mods) + cur_buttons, a_UserGroups)
def GetStartCommentKeyboardButtons(a_Message, a_UserGroups):
cur_buttons = [
keyboard.ButtonWithAccess(list_comment_button_name, user_access.AccessMode.VIEW, GetAccess()),
keyboard.ButtonWithAccess(add_comment_button_name, user_access.AccessMode.ADD, GetAccess()),
keyboard.ButtonWithAccess(del_comment_button_name, user_access.AccessMode.DELETE, GetAccess()),
keyboard.ButtonWithAccess(edit_comment_button_name, user_access.AccessMode.EDIT, GetAccess())
]
mods = [start, projects, tasks, needs]
return keyboard.MakeKeyboard(keyboard.GetButtons(mods) + cur_buttons, a_UserGroups)
# ---------------------------------------------------------
# Обработка сообщений
# стартовое сообщение
async def CommentsOpen(a_Message : types.message, state = None):
return simple_message.WorkFuncResult(base_comment_message)
def GetButtonNameAndKeyValueAndAccess(a_Item):
# commentDesc commentID commentAccess
return a_Item[1], a_Item[0], a_Item[2]
def ShowMessageTemplate(a_StringMessage):
async def ShowMessage(a_CallbackQuery : types.CallbackQuery, a_Item):
if (len(a_Item) < 4):
return simple_message.WorkFuncResult(error_find_proj_message)
msg = a_StringMessage.\
replace(f'#{desc_field}', a_Item[1]).\
replace(f'#{create_datetime_field}', a_Item[3]).\
replace(f'#{access_field}', a_Item[2])
return simple_message.WorkFuncResult(msg, item_access = a_Item[2])
return ShowMessage
def SimpleMessageTemplateLegacy(a_StringMessage):
async def ShowMessage(a_CallbackQuery : types.CallbackQuery, a_Item):
return simple_message.WorkFuncResult(a_StringMessage)
return ShowMessage
# Удаление комментариев
async def CommentPreDelete(a_CallbackQuery : types.CallbackQuery, a_Item):
if (len(a_Item) < 4):
return simple_message.WorkFuncResult(error_find_proj_message)
access = a_Item[2]
return simple_message.WorkFuncResult('', None, item_access = access)
async def CommentPostDelete(a_CallbackQuery : types.CallbackQuery, a_ItemID):
log.Success(f'Комментарий №{a_ItemID} был удалён пользователем {a_CallbackQuery.from_user.id}.')
#TODO: удалить вложенные
return simple_message.WorkFuncResult(comment_success_delete_message)
# ---------------------------------------------------------
# Работа с базой данных комментариев
def AddBDItemFunc(a_ItemData, a_UserID):
print(a_ItemData)
res, error = bot_bd.SQLRequestToBD(f'INSERT INTO {table_name}({desc_field}, {access_field}, {parent_id_field}, {create_datetime_field}) VALUES(?, ?, ?, {bot_bd.GetBDDateTimeNow()})',
commit = True, return_error = True, param = (a_ItemData[desc_field], access.GetItemDefaultAccessForModule(module_name) + f";{a_UserID}=+", a_ItemData[parent_id_field]))
if error:
log.Error(f'Пользоватлель {a_UserID}. Ошибка добавления записи в таблицу {table_name} ({a_ItemData[desc_field]}, {access.GetItemDefaultAccessForModule(module_name)}).')
else:
log.Success(f'Пользоватлель {a_UserID}. Добавлена запись в таблицу {table_name} ({a_ItemData[desc_field]}, {access.GetItemDefaultAccessForModule(module_name)}).')
return res, error
# ---------------------------------------------------------
# API
# Инициализация БД
def GetInitBDCommands():
return init_bd_cmds
def GetAccess():
return access.GetAccessForModule(module_name)
# Доступные кнопки
def GetModuleButtons():
return [keyboard.ButtonWithAccess(comments_button_name, user_access.AccessMode.VIEW, GetAccess())]
# Обработка кнопок
def RegisterHandlers(dp : Dispatcher):
defaul_keyboard_func = GetStartCommentKeyboardButtons
def RegisterSelectParent(a_ButtonName, access_mode):
a_PrefixBase = a_ButtonName
a_Prefix = bd_item_select.FirstSelectBDItemRegisterHandlers(dp, \
a_PrefixBase, \
a_ButtonName, \
projects.table_name, \
projects.key_name, \
projects.GetButtonNameAndKeyValueAndAccess, \
projects.select_project_message, \
projects.GetAccess, \
access_mode = access_mode\
)
a_Prefix = bd_item_select.NextSelectBDItemRegisterHandlers(dp, \
a_Prefix, \
tasks.parent_id_field, \
tasks.table_name, \
tasks.key_name, \
tasks.GetButtonNameAndKeyValueAndAccess, \
tasks.select_task_message, \
tasks.GetAccess, \
access_mode = access_mode\
)
a_Prefix = bd_item_select.NextSelectBDItemRegisterHandlers(dp, \
a_Prefix, \
needs.parent_id_field, \
needs.table_name, \
needs.key_name, \
needs.GetButtonNameAndKeyValueAndAccess, \
needs.select_need_message, \
needs.GetAccess, \
access_mode = access_mode\
)
return a_Prefix
# Стартовое сообщение
dp.register_message_handler(simple_message.SimpleMessageTemplateLegacy(CommentsOpen, defaul_keyboard_func, GetAccess), text = comments_button_name)
# Список комментариев
a_Prefix = RegisterSelectParent(list_comment_button_name, user_access.AccessMode.VIEW)
bd_item_view.LastSelectAndShowBDItemRegisterHandlers(dp, \
a_Prefix, parent_id_field, \
table_name, key_name, \
ShowMessageTemplate(comment_open_message), \
GetButtonNameAndKeyValueAndAccess, \
select_comment_message, \
GetAccess, \
defaul_keyboard_func, \
access_mode = user_access.AccessMode.VIEW\
)
global select_comments_prefix
select_comments_prefix = a_Prefix
# Удаление комментариев
a_Prefix = RegisterSelectParent(del_comment_button_name, user_access.AccessMode.DELETE)
bd_item_delete.DeleteBDItemRegisterHandlers(dp, \
a_Prefix, \
bd_item.GetCheckForPrefixFunc(a_Prefix), \
table_name, \
key_name, \
parent_id_field, \
CommentPreDelete, \
CommentPostDelete, \
GetButtonNameAndKeyValueAndAccess, \
select_comment_message, \
GetAccess, \
defaul_keyboard_func\
)
# Добавление комментариев
a_Prefix = RegisterSelectParent(add_comment_button_name, user_access.AccessMode.ADD)
bd_item_add.AddBDItem1RegisterHandlers(dp, \
bd_item.GetCheckForPrefixFunc(a_Prefix), \
FSMCreateComment, \
AddBDItemFunc, \
SimpleMessageTemplateLegacy(comment_create_desc_message), \
SimpleMessageTemplateLegacy(comment_success_create_message), \
a_Prefix,\
needs.table_name, \
needs.key_name, \
desc_field, \
GetButtonNameAndKeyValueAndAccess, \
GetAccess, \
GetStartCommentKeyboardButtons,\
bd_item.FieldType.text
)
def RegisterEdit(a_ButtonName, a_FSM, a_EditMessage, a_FieldName, a_FieldType, a_AccessMode = user_access.AccessMode.EDIT):
a_Prefix = RegisterSelectParent(a_ButtonName, a_AccessMode)
bd_item_edit.EditBDItemRegisterHandlers(dp, \
a_Prefix, \
a_FSM, \
bd_item.GetCheckForPrefixFunc(a_Prefix), \
comment_select_to_edit_message, \
ShowMessageTemplate(a_EditMessage), \
ShowMessageTemplate(comment_success_edit_message), \
table_name, \
key_name, \
parent_id_field, \
a_FieldName, \
GetButtonNameAndKeyValueAndAccess, \
GetAccess, \
edit_keyboard_func, \
access_mode = a_AccessMode, \
field_type = a_FieldType\
)
# Редактирование комментариев
edit_keyboard_func = GetEditCommentKeyboardButtons
dp.register_message_handler(simple_message.InfoMessageTemplateLegacy(comment_start_edit_message, edit_keyboard_func, GetAccess, access_mode = user_access.AccessMode.EDIT), text = edit_comment_button_name)
RegisterEdit(edit_comment_desc_button_name, FSMEditCommentDescItem, comment_edit_desc_message, desc_field, bd_item.FieldType.text)
RegisterEdit(edit_comment_access_button_name, FSMEditCommentAccessItem, comment_edit_access_message, access_field, bd_item.FieldType.text)

4
bot_modules/projects.py

@ -66,8 +66,8 @@ button_names = {
} }
messages = { messages = {
mod_table_operate.Messages.START: ''' mod_table_operate.Messages.START: f'''
<b>🟥 Проекты</b> <b>{button_names[mod_table_operate.ButtonNames.START]}</b>
''', ''',
mod_table_operate.Messages.SELECT: ''' mod_table_operate.Messages.SELECT: '''

14
main.py

@ -6,7 +6,7 @@ log_start_message = 'Бот успешно запущен!'
import os import os
from bot_sys import config, log, bot_bd, user_access, aiogram_bot, bot_messages, bd_table from bot_sys import config, log, bot_bd, user_access, aiogram_bot, bot_messages, bd_table
from bot_modules import mod_agregator, start, profile, backup, groups, access, projects, tasks, needs #, projects, , access, , , , comments, messages, , languages from bot_modules import mod_agregator, start, profile, backup, groups, access, projects, tasks, needs, comments #, projects, , access, , , , , messages, , languages
g_Log = log g_Log = log
g_Bot = aiogram_bot.AiogramBot(config.GetTelegramBotApiToken(), bot_bd.GetBDFileName(), config.GetRootIDs(), g_Log) g_Bot = aiogram_bot.AiogramBot(config.GetTelegramBotApiToken(), bot_bd.GetBDFileName(), config.GetRootIDs(), g_Log)
@ -38,18 +38,22 @@ g_ModuleAgregator.AddModule(mod_profile)
mod_backup = backup.ModuleBackup(start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log) mod_backup = backup.ModuleBackup(start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log)
g_ModuleAgregator.AddModule(mod_backup) g_ModuleAgregator.AddModule(mod_backup)
start_mod_name_list = [mod_start_name, mod_tasks_name, mod_needs_name]#, , , mod_comments_name] start_mod_name_list = [mod_start_name, mod_tasks_name, mod_needs_name, mod_comments_name]
mod_project = projects.ModuleProjects(None, mod_tasks_name, start_mod_name_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log) mod_project = projects.ModuleProjects(None, mod_tasks_name, start_mod_name_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log)
g_ModuleAgregator.AddModule(mod_project) g_ModuleAgregator.AddModule(mod_project)
start_mod_name_list = [mod_start_name, mod_projects_name, mod_needs_name]#, , mod_comments_name] start_mod_name_list = [mod_start_name]#, mod_projects_name, mod_needs_name, mod_comments_name]
mod_tasks = tasks.ModuleTasks(mod_projects_name, mod_needs_name, start_mod_name_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log) mod_tasks = tasks.ModuleTasks(mod_projects_name, mod_needs_name, start_mod_name_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log)
g_ModuleAgregator.AddModule(mod_tasks) g_ModuleAgregator.AddModule(mod_tasks)
start_mod_name_list = [mod_start_name, mod_projects_name, mod_tasks_name]#, , mod_comments_name] start_mod_name_list = [mod_start_name]#, mod_projects_name, mod_tasks_name, mod_comments_name]
mod_needs= needs.ModuleNeeds(mod_tasks_name, None, start_mod_name_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log) mod_needs= needs.ModuleNeeds(mod_tasks_name, mod_comments_name, start_mod_name_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log)
g_ModuleAgregator.AddModule(mod_needs) g_ModuleAgregator.AddModule(mod_needs)
start_mod_name_list = [mod_start_name]#, mod_projects_name, mod_tasks_name, mod_needs_name]
mod_comments= comments.ModuleComments(mod_needs_name, None, start_mod_name_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log)
g_ModuleAgregator.AddModule(mod_comments)
start_mod_name_list = [#, '', , '', , 'languages'] start_mod_name_list = [#, '', , '', , 'languages']
mod_profile.GetName(), mod_profile.GetName(),
mod_backup.GetName(), mod_backup.GetName(),

1
template/bd_item_add.py

@ -100,6 +100,7 @@ def AddBDItem3RegisterHandlers(a_Bot, a_StartCheckFunc, a_FSM, a_FSMName, a_FSMD
reg_func = a_Bot.RegisterCallbackHandler reg_func = a_Bot.RegisterCallbackHandler
reg_func(StartAddBDItemTemplate(a_Bot, a_FSM, a_FSMName, a_AddNameMessageFunc, a_ParentTableName, a_ParentKeyFieldName, a_ParentPrefix, a_AccessFunc, keyboard_cancel, a_ButtonFunc, access_mode), a_StartCheckFunc) reg_func(StartAddBDItemTemplate(a_Bot, a_FSM, a_FSMName, a_AddNameMessageFunc, a_ParentTableName, a_ParentKeyFieldName, a_ParentPrefix, a_AccessFunc, keyboard_cancel, a_ButtonFunc, access_mode), a_StartCheckFunc)
# TODO: Сделать возможность не указывать все поля. пусть a_FSMName и a_NameField например могут быть пустыми. Возможно лучше вообще передавать список полей и их fsm
a_Bot.RegisterMessageHandler(NextAddBDItemTemplate(a_Bot, a_FSM, None, a_ParentTableName, a_ParentKeyFieldName, a_NameField, a_AddDescMessageFunc, a_AccessFunc, keyboard_cancel, a_ButtonFunc, access_mode, field_type = bd_item.FieldType.text), state = a_FSMName) a_Bot.RegisterMessageHandler(NextAddBDItemTemplate(a_Bot, a_FSM, None, a_ParentTableName, a_ParentKeyFieldName, a_NameField, a_AddDescMessageFunc, a_AccessFunc, keyboard_cancel, a_ButtonFunc, access_mode, field_type = bd_item.FieldType.text), state = a_FSMName)
a_Bot.RegisterMessageHandler(NextAddBDItemTemplate(a_Bot, a_FSM, None, a_ParentTableName, a_ParentKeyFieldName, a_DescField, a_AddPhotoMessageFunc, a_AccessFunc, keyboard_skip_and_cancel, a_ButtonFunc, access_mode, field_type = bd_item.FieldType.text), state = a_FSMDesc) a_Bot.RegisterMessageHandler(NextAddBDItemTemplate(a_Bot, a_FSM, None, a_ParentTableName, a_ParentKeyFieldName, a_DescField, a_AddPhotoMessageFunc, a_AccessFunc, keyboard_skip_and_cancel, a_ButtonFunc, access_mode, field_type = bd_item.FieldType.text), state = a_FSMDesc)
a_Bot.RegisterMessageHandler(FinishAddBDItemTemplate(a_Bot, a_FSM, a_AddBDItemFunc, a_ParentTableName, a_ParentKeyFieldName, a_PhotoField, a_FinishMessageFunc, a_AccessFunc, a_ButtonFunc, access_mode, field_type = bd_item.FieldType.photo), content_types = ['photo', 'text'], state = a_FSMPhoto) a_Bot.RegisterMessageHandler(FinishAddBDItemTemplate(a_Bot, a_FSM, a_AddBDItemFunc, a_ParentTableName, a_ParentKeyFieldName, a_PhotoField, a_FinishMessageFunc, a_AccessFunc, a_ButtonFunc, access_mode, field_type = bd_item.FieldType.photo), content_types = ['photo', 'text'], state = a_FSMPhoto)

Loading…
Cancel
Save