def step_start(message):
    uid = str(message.from_user.id)
    cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
    # print(str(cur_time) + " | " + uid + ": " + message.text)

    db = SQLighter(config.database_name)
    start_btns = db.get_buttons(step[uid]['cur'])

    # отрезаем смайл
    t = ''
    if len(message.text.split(' ')) > 2:
        for i in message.text.split(' ')[1:]:
            t += i + ' '
        t = t[:-1]
    else:
        t = message.text.split(' ')[-1]
    fucking_flag = 0
    for button in start_btns:
        if t is not None and t == button:
            fucking_flag = 1
            step[uid]['cur'] = button
            step[uid]['path'].append(step[uid]['cur'])
            break

    msgs = db.get_messages(step[uid]['cur'])
    if len(msgs) > 0:
        text = msgs[0]

        m = markup(db, step[uid]['cur'], uid)
        if m is None and (t == 'Корзина' or t == 'Оформить'):
            step[uid]['path'].pop()
            step[uid]['cur'] = step[uid]['path'][-1]
            text = db.get_messages('recycle_empty')[0]
            m = markup(db, step[uid]['cur'])

        elif t == "Корзина":
            total = 0
            reqs = db.get_requests(uid)

            if len(reqs) == 0:
                text = db.get_messages('recycle_empty')[0]
                step[uid]['path'].pop()
                step[uid]['cur'] = step[uid]['path'][-1]
                m = markup(db, step[uid]['cur'])
            else:
                for i in reqs:
                    if len(i) >= 3:
                        text += str(i[0]) + ",  " + str(i[1]) + " x " + str(i[2]) + "\n"
                        total += int(i[1]) * int(i[2])
                text += "\nВсего: {} сум".format(total) + "\n\n" + msgs[1]

        db.close()
        if fucking_flag:
            bot.send_message(message.chat.id, text, reply_markup=m, parse_mode='HTML')
        else:
            pass

    else:
        db.close()
        print(str(datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')) + "| " + uid + ': database error')
def step_checkout_outside(message):
    uid = str(message.from_user.id)
    cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
    print(str(cur_time) + " | " + uid + ": " + message.text)

    db = SQLighter(config.database_name)
    btns = db.get_buttons(step[uid]['cur'])

    if len(message.text.split(' ')) > 2 and message.text.split(' ')[-2] + ' ' + message.text.split(' ')[-1] == \
            db.get_buttons('Оформить')[1]:
        text = db.get_messages('location_error')
        db.close()
        bot.send_message(message.from_user.id, text, parse_mode='HTML')
    else:
        step[uid]['cur'] = 'Адрес'
        step[uid]['path'].append(step[uid]['cur'])
        text = db.get_messages(step[uid]['cur'])
        if len(text) > 0:
            request[uid] = {}
            if message.text in btns:
                request[uid]['deliver'] = message.text
                request[uid]['longitude'] = ''
                request[uid]['latitude'] = ''
                request[uid]['destination'] = ''
            else:
                request[uid]['deliver'] = ''
                request[uid]['longitude'] = ''
                request[uid]['latitude'] = ''
                request[uid]['destination'] = message.text

            text = text[0]
            m = markup(db, step[uid]['cur'], uid)
            db.close()
            bot.send_message(message.from_user.id, text, reply_markup=m, parse_mode='HTML')
        else:
            db.close()
            cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
            print(str(cur_time) + " | " + uid + ": Произошла ошибка чтения из базы данных")
def step_payment(message):
    uid = str(message.from_user.id)
    cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
    print(str(cur_time) + " | " + uid + ": " + message.text)

    db = SQLighter(config.database_name)
    pay_type_list = db.get_buttons(step[uid]['cur'])

    t = ''
    if len(message.text.split(' ')) > 2:
        for i in message.text.split(' ')[1:]:
            t += i + ' '
        t = t[:-1]
    else:
        t = message.text.split(' ')[-1]
    if t in pay_type_list:
        step[uid]['cur'] = 'Оплата'
        step[uid]['path'].append(step[uid]['cur'])
        text = db.get_messages(step[uid]['cur'])

        if len(text) > 0:
            request[uid]['payment'] = t
            text = text[0] + "\n"
            total = 0
            for i in db.get_requests(uid):
                if len(i) >= 3:
                    text += str(i[0]) + ",  " + str(i[1]) + " x " + str(i[2]) + "\n"
                    total += int(i[1]) * int(i[2])
            text += "\nВсего: {} сум".format(total) + "\n"
            if total >= 120000:
                text += "<b>При заказе от 120 000 сум доставка бесплатна.\nУ Вас бесплатная доставка!</b>" + '\n\n' + \
                        db.get_messages('confirm')[0]
            else:
                text += "<b>При заказе от 120 000 сум доставка бесплатна.\nДо бесплатной доставки - {} сум</b>\n\n".format(
                    120000 - total) + db.get_messages('confirm')[0]

            m = markup(db, step[uid]['cur'], uid)
            db.close()
            bot.send_message(message.from_user.id, text, reply_markup=m, parse_mode='HTML')
        else:
            db.close()
            cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
            print(str(cur_time) + " | " + uid + ": Произошла ошибка чтения из базы данных")
def step_food_drink(message):
    uid = str(message.from_user.id)
    cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
    # print(str(cur_time) + " | " + uid + ": " + message.text)

    db = SQLighter(config.database_name)
    step_btns = db.get_buttons(step[uid]['cur'])

    # отрезаем смайл
    t = ''
    if message.text not in config.type_list:
        if len(message.text.split(' ')) > 2:
            for i in message.text.split(' ')[1:]:
                t += i + ' '
            t = t[:-1]
        else:
            t = message.text.split(' ')[-1]
    else:
        t = message.text

    fucking_flag = 0
    for button in step_btns:
        if t is not None and t == button:
            fucking_flag = 1
            step[uid]['cur'] = button
            step[uid]['path'].append(step[uid]['cur'])
            break

    msgs = db.get_messages(step[uid]['cur'])
    if len(msgs) > 0:
        text = msgs[0]
        m = markup(db, step[uid]['cur'], uid)
        db.close()

        if fucking_flag:
            bot.send_message(message.chat.id, text, reply_markup=m, parse_mode='HTML')
        else:
            pass

    else:
        db.close()
        print(str(datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')) + " | " + uid + ': database error')