def delete_preset(user): try: profile = db_api.RpProfile().get_profile(user.info.item_id).name if db_api.RpProfile().delete_profile(user.info.item_id): message = f'Ваш поисковой пресет "{profile}" успешно удален.' else: message = f'Во время удаления пресета произошла ошибка, попробуйте повторить запрос через некоторое время.' except: message = f'Во время удаления пресета произошла ошибка, попробуйте повторить запрос через некоторое время.' button_return = vk_api.new_button('Вернуться к списку пресетов', { 'm_id': 'choose_preset_to_search', 'args': None }) return {'message': message, 'keyboard': [[button_return]]}
def delete_profile(user): try: profile = db_api.RpProfile().get_profile(user.info.item_id).name if db_api.RpProfile().delete_profile(user.info.item_id): message = f'Ваша анкета "{profile}" успешно удалена.' else: message = f'Во время удаления анкеты произошла ошибка, попробуйте повторить запрос через некоторое время.' except: message = f'Во время удаления анкеты произошла ошибка, попробуйте повторить запрос через некоторое время.' button_return = vk_api.new_button('Вернуться к списку анкет', { 'm_id': 'user_profiles', 'args': None }) return {'message': message, 'keyboard': [[button_return]]}
def choose_preset_to_search(user): message = 'Выберите один из списка ваших поисковых пресетов:' profiles = db_api.RpProfile().get_user_profiles(user.info.id, search_preset=True) pr_buttons = list() for num, pr in enumerate(profiles): message += f'\n{num+1}){pr.name}' pr_buttons.append([ vk_api.new_button(pr.name, { 'm_id': 'change_preset', 'args': { 'item_id': pr.id } }) ]) if len(profiles) < 4: button_create_preset = vk_api.new_button('создать новый пресет', {'m_id': 'create_preset'}, 'primary') else: button_create_preset = vk_api.new_button( 'создать новый пресет', {'m_id': 'choose_preset_to_search'}) button_main = vk_api.new_button('Главное меню', { 'm_id': 'main', 'args': None }, 'primary') return { 'message': message, 'keyboard': pr_buttons + [[button_create_preset], [button_main]] }
def show_all_player_profiles(user): if 'player_id' not in user.menu_args: return system.access_error() profiles = db_api.RpProfile().get_user_profiles( user.menu_args['player_id']) pr_buttons = list() if not profiles: message = 'Список анкет пуст' else: message = 'Список анкет:\n' for num, pr in enumerate(profiles): message += f'\n{num+1}) {pr.name}' pr_buttons.append([ vk_api.new_button( f'{pr.name}', { 'm_id': 'show_player_profile', 'args': { 'profile_id': pr.id, 'btn_back': { 'm_id': 'show_all_player_profiles', 'args': { 'player_id': user.menu_args['player_id'] } } } }) ]) button_back = vk_api.new_button('Назад', {'m_id': user.info.menu_id}, 'primary') return {'message': message, 'keyboard': pr_buttons + [[button_back]]}
def block_user(user_info, add_block): blocked = db_api.BlockedUser().is_profile_blocked(user_info.id, user_info.tmp_item_id) block_profile = db_api.RpProfile().get_profile(user_info.tmp_item_id) if block_profile: block_user_id = block_profile.owner_id if blocked and not add_block: db_api.BlockedUser().delete_from_list(user_info.id, block_user_id) elif not blocked and add_block: db_api.BlockedUser().add(user_info.id, block_user_id)
def update_images(message): print('update_images', message) if not message: return False images_attachments = [ i['photo'] for i in message['attachments'] if i['type'] == 'photo' ] images = [ f"photo{i['owner_id']}_{i['id']}_{i.get('access_key', '')}" for i in images_attachments ] print('images', images) user_info = db_api.User().get_user(message['peer_id']) if user_info: rp_profile = db_api.RpProfile().get_profile(user_info.item_id) if rp_profile: rp_profile.arts = json.dumps(images, ensure_ascii=False) rp_profile.save() return True return False
def user_profiles(user): profiles = db_api.RpProfile().get_user_profiles(user.info.id) message = 'Список ваших анкет:\n' \ 'В скобках указано количество дней, которое анкета будет актуальна. Просто откройте анкету для обновления' pr_buttons = list() for num, pr in enumerate(profiles): days_actual = max( int((db_api.profile_actual_time - (time.time() - pr.create_date)) / (24 * 60 * 60)), 0) message += f'\n{num+1}){pr.name} ({days_actual})' pr_buttons.append([ vk_api.new_button(f'{pr.name} ({days_actual})', { 'm_id': 'change_profile', 'args': { 'profile_id': pr.id } }) ]) button_main = vk_api.new_button('Главное меню', { 'm_id': 'main', 'args': None }, 'primary') if len(profiles) < 4: button_create_rp = vk_api.new_button('создать новую анкету', { 'm_id': 'create_profile', 'args': None }, 'primary') else: button_create_rp = vk_api.new_button('создать новую анкету', { 'm_id': 'user_profiles', 'args': None }, 'default') return { 'message': message, 'keyboard': pr_buttons + [[button_create_rp], [button_main]] }
def change_profile(user): if user.menu_args.get('profile_id', None): user.info.item_id = user.menu_args['profile_id'] profile = db_api.RpProfile().get_profile(user.info.item_id) if not profile: return system.access_error() if user.menu_args.get('link', None) in (True, False): profile.show_link = user.menu_args['link'] profile.create_date = int(time.time()) profile.save() user.info.menu_id = 'change_profile' user.info.save() message = system.rp_profile_display(user.info.item_id) message['message'] = 'Ваша анкета:\n\n' + message['message'] button_main = vk_api.new_button('Главное меню', { 'm_id': 'main', 'args': None }, 'primary') buttons_change_name = vk_api.new_button( 'Имя', {'m_id': ChangeName().menu_names['change']}) buttons_change_gender = vk_api.new_button( 'Пол', {'m_id': ChangeGenderList().menu_names['change']}) buttons_change_setting = vk_api.new_button( 'Сеттинг', {'m_id': ChangeSettingList().menu_names['change']}) buttons_change_rp_rating = vk_api.new_button( 'Рейтинг', {'m_id': ChangeRpRatingList().menu_names['change']}) buttons_change_species = vk_api.new_button( 'Вид', {'m_id': ChangeSpeciesList().menu_names['change']}) buttons_change_optional_tag = vk_api.new_button( 'Теги', {'m_id': ChangeOptionalTagList().menu_names['change']}) buttons_change_description = vk_api.new_button( 'Описание', {'m_id': ChangeDescription().menu_names['change']}) buttons_change_images = vk_api.new_button('Изображения', { 'm_id': 'change_images', 'args': None }) buttons_delete = vk_api.new_button( 'Удалить анкету', { 'm_id': 'confirm_action', 'args': { 'm_id': 'delete_profile', 'args': { 'profile_id': user.info.item_id } } }, 'negative') if profile.show_link: buttons_show_link = vk_api.new_button('Ваша подпись', { 'm_id': 'change_profile', 'args': { 'link': False } }, 'positive') else: buttons_show_link = vk_api.new_button('Ваша подпись', { 'm_id': 'change_profile', 'args': { 'link': True } }, 'negative') return { 'message': message['message'], 'attachment': message['attachment'], 'keyboard': [[buttons_change_name, buttons_change_description, buttons_show_link], [buttons_change_gender, buttons_change_species], [ buttons_change_setting, buttons_change_optional_tag, buttons_change_rp_rating ], [buttons_change_images], [buttons_delete], [button_main]] }
def create_profile(user): rp_profile = db_api.RpProfile().create_profile(user.info.id) user.info.item_id = rp_profile.id user.info.save() return change_profile(user)
def update_db(self, user): rp_profile = db_api.RpProfile().get_profile(user.info.item_id) rp_profile.description = user.msg_text rp_profile.save()
def create_preset(user): search_preset = db_api.RpProfile().create_profile(user.info.id, search_preset=True) user.info.item_id = search_preset.id user.info.save() return change_preset(user, new_preset=True)
def show_player_profile(user): if 'profile_id' in user.menu_args: user.info.tmp_item_id = user.menu_args['profile_id'] user.info.save() if 'btn_back' in user.menu_args: btn_back = user.menu_args['btn_back'] else: btn_back = {'label': 'В главное меню', 'm_id': 'main', 'args': None} if 'offer' in user.menu_args: send_offer(user.info, user.menu_args['offer']) if 'block' in user.menu_args: block_user(user.info, user.menu_args['block']) message = system.rp_profile_display(user.info.tmp_item_id) if message == system.access_error(): return message role_offer = db_api.RoleOffer().get_offer_to_profile( user.info.id, user.info.tmp_item_id) if role_offer and role_offer.actual: button_offer = vk_api.new_button( 'Отменить предложение', { 'm_id': 'show_player_profile', 'args': { 'offer': False, 'btn_back': btn_back } }, 'negative') else: button_offer = vk_api.new_button( 'Предложить ролевую', { 'm_id': 'show_player_profile', 'args': { 'offer': True, 'btn_back': btn_back } }, 'positive') block = db_api.BlockedUser().is_profile_blocked(user.info.id, user.info.tmp_item_id) if block: button_block = vk_api.new_button( 'Разблокировать', { 'm_id': 'show_player_profile', 'args': { 'block': False, 'btn_back': btn_back } }, 'positive') else: button_block = vk_api.new_button( 'Скрыть пользователя', { 'm_id': 'show_player_profile', 'args': { 'block': True, 'btn_back': btn_back } }, 'negative') profile_owner = db_api.RpProfile().get_profile( user.info.tmp_item_id).owner_id button_other_profiles = vk_api.new_button('другие анкеты пользователя', { 'm_id': 'show_all_player_profiles', 'args': { 'player_id': profile_owner } }) button_back = vk_api.new_button('Назад', { 'm_id': btn_back['m_id'], 'args': btn_back.get('args', None) }, 'primary') message.update({ 'keyboard': [[button_block, button_offer], [button_other_profiles], [button_back]] }) return message