Пример #1
0
def hour_callback(update: Update, context: CallbackContext):
    callback_query = update.callback_query
    data = callback_query.data

    user_data = context.user_data
    user = user_data['user_data']

    if data == 'next_btn' or data == 'back_btn':

        if data == 'next_btn':
            inline_keyboard = InlineKeyboard(hours_keyboard,
                                             user[LANG],
                                             begin=18,
                                             end=29).get_keyboard()

        if data == 'back_btn':
            inline_keyboard = InlineKeyboard(hours_keyboard,
                                             user[LANG],
                                             begin=6,
                                             end=17).get_keyboard()

        callback_query.edit_message_reply_markup(inline_keyboard)

        state = user_data[USER_INPUT_DATA][STATE]

    else:

        user_data[USER_INPUT_DATA][TIME] = data
        phone_number_layout = get_phone_number_layout(user[LANG])

        if user[LANG] == LANGS[0]:
            edit_text = "Siz bilan bog'lanish uchun raqamingizni yuboring\n\n"

        if user[LANG] == LANGS[1]:
            edit_text = 'Отправьте свой номер для связи с вами\n\n'

        if user[LANG] == LANGS[2]:
            edit_text = "Сиз билан боғланиш учун рақамингизни юборинг\n\n"

        reply_text = phone_number_layout

        callback_query.edit_message_text(edit_text)
        logger.info('user_input_data: %s', user_data[USER_INPUT_DATA])

        reply_keyboard = ReplyKeyboard(phone_number_keyboard,
                                       user[LANG]).get_keyboard()
        callback_query.message.reply_html(reply_text,
                                          reply_markup=reply_keyboard)

        state = USER_PHONE_NUMBER

        user_data[USER_INPUT_DATA][STATE] = state

    callback_query.answer()
    return state
Пример #2
0
def main_inline_keyboard_callback(update: Update, context: CallbackContext):
    # with open('callback_query.json', 'w') as callback_query_file:
    #     callback_query_file.write(callback_query.to_json())
    user_data = context.user_data
    set_user_data(update.effective_user.id, user_data)
    user = user_data['user_data']

    callback_query = update.callback_query
    data = callback_query.data

    match_obj = re.search(r'^(\d+_closed)$', data)
    match_obj_2 = re.search(r'^(w_\d+)$', data)

    if match_obj:

        # print(data)
        data = match_obj.string.split('_')
        cargo_id = int(data[0])
        cargo_status = data[-1]
        return_value = update_cargo_status(cargo_id, cargo_status)

        if return_value == 'updated' or return_value == 'not updated':

            user_data['user_cargoes'] = get_user_cargoes(user[ID])
            cargo_data = get_cargo_by_id(cargo_id)

            shipping_datetime = cargo_data['shipping_datetime']
            cargo_data[DATE] = shipping_datetime.strftime('%d-%m-%Y')
            cargo_data[TIME] = shipping_datetime.strftime('%H:%M')
            cargo_data[FROM_LOCATION] = None
            cargo_data[TO_LOCATION] = None
            cargo_data[NAME] = user[NAME]
            cargo_data[SURNAME] = user[SURNAME]
            cargo_data[USERNAME] = user[USERNAME]

            layout = get_new_cargo_layout(cargo_data, user[LANG])
            layout_2 = get_new_cargo_layout(cargo_data,
                                            'cy',
                                            hide_user_data=True)

            open_text = inline_keyboard_types[paginate_keyboard][user[LANG]][1]
            button4_text = f'{open_text}'
            button4_data = f'{cargo_id}_opened'

            inline_keyboard = callback_query.message.reply_markup
            inline_keyboard['inline_keyboard'][-1][0] = InlineKeyboardButton(
                button4_text, callback_data=button4_data)

            callback_query.answer()
            callback_query.edit_message_text(layout,
                                             parse_mode=ParseMode.HTML,
                                             reply_markup=inline_keyboard)

            if return_value == 'updated':

                if cargo_data['photo_id']:
                    context.bot.edit_message_caption(GROUP_ID,
                                                     cargo_data[POST_ID],
                                                     caption=layout_2,
                                                     parse_mode=ParseMode.HTML)
                else:
                    context.bot.edit_message_text(layout_2,
                                                  GROUP_ID,
                                                  cargo_data[POST_ID],
                                                  parse_mode=ParseMode.HTML)

    elif match_obj_2:

        user_data['user_cargoes'] = get_user_cargoes(user[ID])

        wanted = int(match_obj_2.string.split('_')[-1])
        wanted_cargo_data = user_data['user_cargoes'][wanted - 1]

        shipping_datetime = wanted_cargo_data['shipping_datetime']
        wanted_cargo_data[DATE] = shipping_datetime.strftime('%d-%m-%Y')
        wanted_cargo_data[TIME] = shipping_datetime.strftime('%H:%M')
        wanted_cargo_data[NAME] = user[NAME]
        wanted_cargo_data[SURNAME] = user[SURNAME]
        wanted_cargo_data[USERNAME] = user[USERNAME]

        layout = get_new_cargo_layout(wanted_cargo_data, user[LANG])
        inline_keyboard = InlineKeyboard(
            paginate_keyboard,
            user[LANG],
            data=(wanted, user_data['user_cargoes'])).get_keyboard()
        callback_query.answer()
        callback_query.edit_message_text(layout,
                                         reply_markup=inline_keyboard,
                                         parse_mode=ParseMode.HTML)

    elif data == BUTTONS_DATA_DICT[7] or data == BUTTONS_DATA_DICT[
            8] or data == BUTTONS_DATA_DICT[9]:

        if data == BUTTONS_DATA_DICT[7]:
            lang = LANGS[0]
            text = "Til: O'zbekcha"
            reply_text = "Til o'zgartirildi"
            edited_text = '\U0001F1FA\U0001F1FF'

        elif data == BUTTONS_DATA_DICT[8]:
            lang = LANGS[1]
            text = "Язык: русский"
            reply_text = 'Язык был изменен'
            edited_text = '\U0001F1F7\U0001F1FA'

        elif data == BUTTONS_DATA_DICT[9]:
            lang = LANGS[2]
            text = "Тил: Ўзбекча"
            reply_text = "Тил ўзгартирилди"
            edited_text = '\U0001F1FA\U0001F1FF'

        context.bot.answer_callback_query(callback_query.id, reply_text)

        update_user_info(user[TG_ID], lang=lang)
        user_data['user_data'][LANG] = lang

        reply_keyboard = ReplyKeyboard(menu_keyboard, lang).get_keyboard()
        callback_query.edit_message_text(edited_text)
        callback_query.message.reply_text(text, reply_markup=reply_keyboard)

    else:
        callback_query.answer()
Пример #3
0
def date_callback(update: Update, context: CallbackContext):
    callback_query = update.callback_query
    data = callback_query.data

    user_data = context.user_data
    user = user_data['user_data']

    if data == 'now':

        user_data[USER_INPUT_DATA][DATE] = datetime.datetime.now().strftime(
            '%d-%m-%Y')
        user_data[USER_INPUT_DATA][TIME] = 'now'

        phone_number_layout = get_phone_number_layout(user[LANG])

        if user[LANG] == LANGS[0]:
            edit_text = "Siz bilan bog'lanish uchun raqamingizni yuboring"

        if user[LANG] == LANGS[1]:
            edit_text = "Отправьте свой номер для связи с вами"

        if user[LANG] == LANGS[2]:
            edit_text = "Сиз билан боғланиш учун рақамингизни юборинг"

        reply_text = phone_number_layout

        callback_query.edit_message_text(edit_text)
        logger.info('user_input_data: %s', user_data[USER_INPUT_DATA])

        reply_keyboard = ReplyKeyboard(phone_number_keyboard,
                                       user[LANG]).get_keyboard()
        callback_query.message.reply_html(reply_text,
                                          reply_markup=reply_keyboard)

        state = USER_PHONE_NUMBER

    if data == 'today' or data == 'tomorrow' or data == 'after_tomorrow':

        if data == 'today':
            user_data[USER_INPUT_DATA][DATE] = datetime.datetime.now(
            ).strftime('%d-%m-%Y')

        if data == 'tomorrow':
            tomorrow = datetime.datetime.now() + datetime.timedelta(days=1)
            user_data[USER_INPUT_DATA][DATE] = tomorrow.strftime('%d-%m-%Y')

        if data == 'after_tomorrow':
            after_tomorrow = datetime.datetime.now() + datetime.timedelta(
                days=2)
            user_data[USER_INPUT_DATA][DATE] = after_tomorrow.strftime(
                '%d-%m-%Y')

        if user[LANG] == LANGS[0]:
            edit_text = "Soatni belgilang"

        if user[LANG] == LANGS[1]:
            edit_text = "Выберите время"

        if user[LANG] == LANGS[2]:
            edit_text = "Соатни белгиланг"

        edit_text = f'{edit_text} :'

        inline_keyboard = InlineKeyboard(hours_keyboard,
                                         user[LANG],
                                         begin=6,
                                         end=17).get_keyboard()
        callback_query.edit_message_text(edit_text,
                                         reply_markup=inline_keyboard)

        state = TIME

    callback_query.answer()

    user_data[USER_INPUT_DATA][STATE] = state

    return state
Пример #4
0
def confirmation_callback(update: Update, context: CallbackContext):
    callback_query = update.callback_query
    data = callback_query.data

    user_data = context.user_data
    user = user_data['user_data']

    logger.info('user_input_data: %s', user_data[USER_INPUT_DATA])

    if data == 'confirm':

        if user[LANG] == LANGS[0]:
            text = "E'lon tasdiqlandi"

        if user[LANG] == LANGS[1]:
            text = 'Объявление подтверждено'

        if user[LANG] == LANGS[2]:
            text = "Эълон тасдиқланди"

        text = f'\U00002705 {text} !'

        if user_data[USER_INPUT_DATA][FROM_LOCATION] or user_data[
                USER_INPUT_DATA][TO_LOCATION]:
            inline_keyboard = InlineKeyboard(confirm_keyboard,
                                             lang='cy',
                                             data=user_data[USER_INPUT_DATA],
                                             geolocation=True).get_keyboard()
        else:
            inline_keyboard = None

        user_data[USER_INPUT_DATA][STATE] = 'opened'
        cargo_data_for_insert = dict(user_data[USER_INPUT_DATA])
        cargo_data_for_insert.pop(NAME)
        cargo_data_for_insert.pop(SURNAME)
        cargo_data_for_insert.pop(USERNAME)
        cargo_data_for_insert.pop(MESSAGE_ID)
        insert_cargo_id = insert_cargo(cargo_data_for_insert)

        if insert_cargo_id:
            user_data[USER_INPUT_DATA][ID] = insert_cargo_id

            layout = get_new_cargo_layout(user_data[USER_INPUT_DATA],
                                          user[LANG])
            layout_2 = get_new_cargo_layout(user_data[USER_INPUT_DATA], 'cy')

            if user_data[USER_INPUT_DATA][PHOTO]:
                message = context.bot.send_photo(
                    GROUP_ID,
                    user_data[USER_INPUT_DATA][PHOTO].get('file_id'),
                    layout_2,
                    reply_markup=inline_keyboard,
                    parse_mode=ParseMode.HTML)

            else:
                message = context.bot.send_message(
                    GROUP_ID,
                    layout_2,
                    reply_markup=inline_keyboard,
                    parse_mode=ParseMode.HTML)

            update_cargo_post_id(message.message_id, insert_cargo_id)

        else:

            layout = 'ERROR'
            text = layout

        if user_data[USER_INPUT_DATA][PHOTO]:
            callback_query.edit_message_caption(layout,
                                                parse_mode=ParseMode.HTML)
        else:
            callback_query.edit_message_text(layout, parse_mode=ParseMode.HTML)

        reply_keyboard = ReplyKeyboard(menu_keyboard,
                                       user[LANG]).get_keyboard()
        callback_query.message.reply_text(text, reply_markup=reply_keyboard)

        del user_data[USER_INPUT_DATA]
        state = ConversationHandler.END

    if data == 'edit':
        # with open('jsons/callback_query.json', 'w') as cargo:
        #     cargo.write(callback_query.to_json())
        inline_keyboard = InlineKeyboard(edit_keyboard,
                                         user[LANG]).get_keyboard()

        callback_query.answer()
        callback_query.edit_message_reply_markup(inline_keyboard)

        state = EDIT
        user_data[USER_INPUT_DATA][STATE] = state

    return state
Пример #5
0
def txt_callback(update: Update, context: CallbackContext):
    text = update.message.text

    user_data = context.user_data
    user = user_data['user_data']

    logger.info('user_input_data: %s', user_data[USER_INPUT_DATA])

    if text == '/cancel':

        if user[LANG] == LANGS[0]:
            cancel_text = "E'lon bekor qilindi"

        if user[LANG] == LANGS[1]:
            cancel_text = "Объявление отменено"

        if user[LANG] == LANGS[2]:
            cancel_text = "Эълон бекор қилинди"

        cancel_text = f'\U0000274C {cancel_text} !'
        reply_keyboard = ReplyKeyboard(menu_keyboard,
                                       user[LANG]).get_keyboard()

        update.message.reply_text(cancel_text, reply_markup=reply_keyboard)
        context.bot.edit_message_reply_markup(
            update.effective_chat.id,
            user_data[USER_INPUT_DATA].pop(MESSAGE_ID))

        del user_data[USER_INPUT_DATA]
        return ConversationHandler.END

    else:

        if user[LANG] == LANGS[0]:
            warning_text = "Sizda tugallanmagan e'lon mavjud !\n\n" \
                           "E'lonni bekor qilish uchun /cancel ni yuboring"

        if user[LANG] == LANGS[1]:
            warning_text = "У вас есть незаконченное объявление !\n\n" \
                           "Отправите /cancel , чтобы отменить объявление"

        if user[LANG] == LANGS[2]:
            warning_text = "Сизда тугалланмаган эълон мавжуд!\n\n" \
                           "Эълонни бекор қилиш учун /cancel ни юборинг"

        if user_data[USER_INPUT_DATA][STATE] == CONFIRMATION:

            if user[LANG] == LANGS[0]:
                confirm = wrap_tags("«Tasdiqlash»")
                warning_text = "Sizda tasdiqlanmagan e'lon bor !\n\n" \
                               f"Tasdiqlash uchun  {confirm} tugmasini bosing\n\n" \
                               "E'lonni bekor qilish uchun /cancel ni yuboring"

            if user[LANG] == LANGS[1]:
                confirm = wrap_tags("«Подтвердить»")
                warning_text = "У вас есть неподтвержденное объявление !\n\n" \
                               f"Нажмите кнопку {confirm}, чтобы подтвердить\n\n" \
                               "Отправите /cancel , чтобы отменить объявление"

            if user[LANG] == LANGS[2]:
                confirm = wrap_tags("«Тасдиқлаш»")

                warning_text = "Сизда тасдиқланмаган эълон бор !\n\n" \
                               f"Тасдиқлаш учун {confirm} тугмасини босинг\n\n" \
                               "Эълонни бекор қилиш учун /cancel ни юборинг"

        warning_text = '\U000026A0 ' + warning_text
        update.message.reply_html(warning_text, quote=True)

        return user_data[USER_INPUT_DATA][STATE]
Пример #6
0
def fullname_callback(update: Update, context: CallbackContext):
    # with open('jsons/update.json', 'w') as update_file:
    #     update_file.write(update.to_json())
    user_data = context.user_data

    fullname = fullname_filter(update.message.text)

    if fullname:

        user_data[USER_INPUT_DATA][FULLNAME] = fullname

        insert_data(user_data[USER_INPUT_DATA], 'users')
        set_user_data(update.effective_user.id, user_data)

        if user_data[USER_INPUT_DATA][LANG] == LANGS[0]:
            text = "Tabriklaymiz !\n" \
                   "Siz ro'yxatdan muvofaqqiyatli o'tdingiz\n\n"

        # if user_data[USER_INPUT_DATA][LANG] == LANGS[1]:
        #     text = "Поздравляем !\n" \
        #            "Вы успешно зарегистрировались\n\n"
        #
        # if user_data[USER_INPUT_DATA][LANG] == LANGS[2]:
        #     text = "Табриклаймиз !\n" \
        #            "Сиз рўйхатдан мувофаққиятли ўтдингиз\n\n"

        if user_data[USER_INPUT_DATA][IS_ADMIN]:
            text += "Buyurtmalarni qabul qilishingiz mumkin"
            menu_keyboard = admin_menu_keyboard

        else:
            text += "Kitob buyurtma qilishingiz mumkin"
            menu_keyboard = client_menu_keyboard

        text = f'\U0001F44F\U0001F44F\U0001F44F {text}'
        reply_keyboard = ReplyKeyboard(
            menu_keyboard, user_data[USER_INPUT_DATA][LANG]).get_keyboard()

        update.message.reply_text(text, reply_markup=reply_keyboard)

        del user_data[USER_INPUT_DATA]

        state = ConversationHandler.END

    else:

        if user_data[USER_INPUT_DATA][LANG] == LANGS[0]:
            text = "Ism va familya xato yuborildi !\n" \
                   "Qaytadan quyidagi formatda yuboring"
            example = "Misol: Sherzodbek Esanov yoki Sherzodbek"

        # if user_data[USER_INPUT_DATA][LANG] == LANGS[1]:
        #     text = 'Имя и фамилия введено неверное !\n' \
        #            'Отправьте еще раз в следующем формате'
        #     example = 'Пример: Шерзод Эсанов'
        #
        # if user_data[USER_INPUT_DATA][LANG] == LANGS[2]:
        #     text = "Исм ва фамиля хато юборилди !\n" \
        #            "Қайтадан қуйидаги форматда юборинг"
        #     example = "Мисол: Шерзод Эсанов"

        text = f'\U000026A0 {text}:\n\n {wrap_tags(example)}'

        update.message.reply_html(text, quote=True)

        state = FULLNAME

    # logger.info('user_data: %s', user_data)

    return state
Пример #7
0
def do_command(update: Update, context: CallbackContext):
    # with open('update.json', 'w') as update_file:
    #     update_file.write(update.to_json())
    user_data = context.user_data
    set_user_data(update.effective_user.id, user_data)
    user = user_data['user_data']

    command = update.message.text

    if command == '/start' or command == '/menu':

        if user:

            if user[LANG] == LANGS[0]:
                text = "Siz ro'yxatdan o'tgansiz"

            # if user[LANG] == LANGS[1]:
            #     text = "Вы зарегистрированы"
            #
            # if user[LANG] == LANGS[2]:
            #     text = "Сиз рўйхатдан ўтгансиз"

            text = f'\U000026A0 {text} !'

            if command == '/menu':

                if user[LANG] == LANGS[0]:
                    reply_text = "Menyu"

                # if user[LANG] == LANGS[1]:
                #     reply_text = "Меню"
                #
                # if user[LANG] == LANGS[2]:
                #     reply_text = "Меню"

                text = f'\U0001F4D6 {reply_text}'

            menu_keyboard = admin_menu_keyboard if user_data['user_data'][
                IS_ADMIN] else client_menu_keyboard

            reply_keyboard = ReplyKeyboard(menu_keyboard,
                                           user[LANG]).get_keyboard()
            update.message.reply_text(text, reply_markup=reply_keyboard)

            state = ConversationHandler.END

        else:
            user_data[USER_INPUT_DATA] = dict()
            user_data[USER_INPUT_DATA][TG_ID] = update.effective_user.id
            user_data[USER_INPUT_DATA][
                USERNAME] = update.effective_user.username
            user_data[USER_INPUT_DATA][
                IS_ADMIN] = update.effective_user.id in ACTIVE_ADMINS
            user_data[USER_INPUT_DATA][LANG] = 'uz'

            text = 'Ism va familyangizni yuboring:'
            update.message.reply_text(text)

            state = FULLNAME

        # logger.info('user_data: %s', user_data)

        return state
Пример #8
0
def message_handler_callback(update: Update, context: CallbackContext):
    # with open('jsons/update.json', 'w') as update_file:
    #     update_file.write(update.to_json())
    user_data = context.user_data
    set_user_data(update.effective_user.id, user_data)
    user = user_data['user_data']

    full_text = update.message.text
    text = full_text.split(' ', 1)[-1]

    if user:

        if text == reply_keyboard_types[menu_keyboard][user[LANG]][3]:

            if user[LANG] == LANGS[0]:
                reply_text = "Sizda hali e'lonlar mavjud emas"

            if user[LANG] == LANGS[1]:
                reply_text = "У вас нет объявлений пока"

            if user[LANG] == LANGS[2]:
                reply_text = "Сизда ҳали эълонлар мавжуд емас"

            reply_text = f'\U0001F615 {reply_text}'
            inline_keyboard = None

            user_cargoes = get_user_cargoes(user[TG_ID])

            if len(user_cargoes) > 0:
                user_data['user_cargoes'] = user_cargoes

                wanted = 1
                wanted_cargo_data = user_cargoes[wanted - 1]

                shipping_datetime = wanted_cargo_data['shipping_datetime']
                wanted_cargo_data[DATE] = shipping_datetime.strftime(
                    '%d-%m-%Y')
                wanted_cargo_data[TIME] = shipping_datetime.strftime('%H:%M')
                wanted_cargo_data[NAME] = user[NAME]
                wanted_cargo_data[SURNAME] = user[SURNAME]
                wanted_cargo_data[USERNAME] = user[USERNAME]

                reply_text = get_new_cargo_layout(wanted_cargo_data,
                                                  user[LANG])
                inline_keyboard = InlineKeyboard(
                    paginate_keyboard, user[LANG],
                    data=(wanted, user_cargoes)).get_keyboard()

            update.message.reply_html(reply_text, reply_markup=inline_keyboard)

        elif text == reply_keyboard_types[menu_keyboard][user[LANG]][4]:

            reply_keyboard = ReplyKeyboard(settings_keyboard,
                                           user[LANG]).get_keyboard()
            update.message.reply_text(full_text, reply_markup=reply_keyboard)

        elif text == reply_keyboard_types[settings_keyboard][user[LANG]][1]:

            inline_keyboard = InlineKeyboard(user_data_keyboard,
                                             user[LANG]).get_keyboard()
            update.message.reply_html(get_user_info_layout(user),
                                      reply_markup=inline_keyboard)

        elif text == reply_keyboard_types[settings_keyboard][user[LANG]][2]:

            reply_text = 'Tilni tanlang\nВыберите язык\nТилни танланг'

            inline_keyboard = InlineKeyboard(langs_keyboard).get_keyboard()
            update.message.reply_text(reply_text, reply_markup=inline_keyboard)

        elif text == reply_keyboard_types[settings_keyboard][user[LANG]][3]:

            reply_keyboard = ReplyKeyboard(menu_keyboard,
                                           user[LANG]).get_keyboard()
            update.message.reply_text(full_text, reply_markup=reply_keyboard)

        else:

            thinking_emoji = '\U0001F914'

            reply_keyboard = ReplyKeyboard(menu_keyboard,
                                           user[LANG]).get_keyboard()
            update.message.reply_text(thinking_emoji,
                                      quote=True,
                                      reply_markup=reply_keyboard)

    else:

        reply_text = "\U000026A0 Siz ro'yxatdan o'tmagansiz !\nBuning uchun /start ni bosing.\n\n'" \
                     "\U000026A0 Вы не зарегистрированы !\nДля этого нажмите /start\n\n" \
                     "\U000026A0 Сиз рўйхатдан ўтмагансиз !\nБунинг учун /start ни босинг"

        update.message.reply_text(reply_text)
def do_command(update: Update, context: CallbackContext):
    # with open('update.json', 'w') as update_file:
    #     update_file.write(update.to_json())
    user_data = context.user_data
    set_user_data(update.effective_user.id, user_data)
    user = user_data['user_data']

    command = update.message.text

    if command == '/start' or command == '/menu':

        if user:

            if user[LANG] == LANGS[0]:
                text = "Siz ro'yxatdan o'tgansiz"

            if user[LANG] == LANGS[1]:
                text = "Вы зарегистрированы"

            if user[LANG] == LANGS[2]:
                text = "Сиз рўйхатдан ўтгансиз"

            text = f'\U000026A0 {text} !'

            if command == '/menu':

                if user[LANG] == LANGS[0]:
                    reply_text = "Menyu"

                if user[LANG] == LANGS[1]:
                    reply_text = "Меню"

                if user[LANG] == LANGS[2]:
                    reply_text = "Меню"

                text = f'\U0001F4D6 {reply_text}'

            reply_keyboard = ReplyKeyboard(menu_keyboard,
                                           user[LANG]).get_keyboard()
            update.message.reply_text(text, reply_markup=reply_keyboard)

            state = ConversationHandler.END

        else:
            user_data[USER_INPUT_DATA] = dict()
            user_data[USER_INPUT_DATA][TG_ID] = update.effective_user.id
            user_data[USER_INPUT_DATA][
                USERNAME] = update.effective_user.username

            inline_keyboard = InlineKeyboard(langs_keyboard).get_keyboard()
            message = update.message.reply_text(
                'Tilni tanlang\n'
                'Выберите язык\n'
                'Тилни танланг',
                reply_markup=inline_keyboard)
            user_data[USER_INPUT_DATA][MESSAGE_ID] = message.message_id

            state = LANG

        logger.info('user_data: %s', user_data)

        return state
def fullname_callback(update: Update, context: CallbackContext):
    # with open('../update.json', 'w') as update_file:
    #     update_file.write(update.to_json())
    user_data = context.user_data

    text = update.message.text
    fullname = fullname_filter(text)

    if fullname:

        user_data[USER_INPUT_DATA][NAME] = fullname[0]
        user_data[USER_INPUT_DATA][SURNAME] = fullname[1]

        insert_user(user_data[USER_INPUT_DATA])
        set_user_data(update.effective_user.id, user_data)

        if user_data[USER_INPUT_DATA][LANG] == LANGS[0]:
            text = "Tabriklaymiz !\n" \
                   "Siz ro'yxatdan muvofaqqiyatli o'tdingiz\n\n" \
                   "E'lon berishingiz mumkin"

        if user_data[USER_INPUT_DATA][LANG] == LANGS[1]:
            text = "Поздравляем !\n" \
                   "Вы успешно зарегистрировались\n\n" \
                   "Вы можете помешать объявление"

        if user_data[USER_INPUT_DATA][LANG] == LANGS[2]:
            text = "Табриклаймиз !\n" \
                   "Сиз рўйхатдан мувофаққиятли ўтдингиз\n\n" \
                   "Эълон беришингиз мумкин"

        text = '\U0001F44F\U0001F44F\U0001F44F ' + text

        reply_keyboard = ReplyKeyboard(
            menu_keyboard, user_data[USER_INPUT_DATA][LANG]).get_keyboard()
        update.message.reply_text(text, reply_markup=reply_keyboard)

        del user_data[USER_INPUT_DATA]

        state = ConversationHandler.END

    else:

        if user_data[USER_INPUT_DATA][LANG] == LANGS[0]:
            text = "Ism va familya xato yuborildi !\n" \
                   "Qaytadan quyidagi formatda yuboring"
            example = "Misol: Sherzod Esanov"

        if user_data[USER_INPUT_DATA][LANG] == LANGS[1]:
            text = 'Имя и фамилия введено неверное !\n' \
                   'Отправьте еще раз в следующем формате'
            example = 'Пример: Шерзод Эсанов'

        if user_data[USER_INPUT_DATA][LANG] == LANGS[2]:
            text = "Исм ва фамиля хато юборилди !\n" \
                   "Қайтадан қуйидаги форматда юборинг"
            example = "Мисол: Шерзод Эсанов"

        text = f'\U000026A0 {text}:\n\n {wrap_tags(example)}'

        update.message.reply_html(text, quote=True)

        state = FULLNAME

    logger.info('user_data: %s', user_data)

    return state