예제 #1
0
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]]}
예제 #2
0
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]]}
예제 #3
0
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]]
    }
예제 #4
0
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]]}
예제 #5
0
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)
예제 #6
0
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
예제 #7
0
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]]
    }
예제 #8
0
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]]
    }
예제 #9
0
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)
예제 #10
0
 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()
예제 #11
0
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)
예제 #12
0
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