Ejemplo n.º 1
0
 def answer_function(bot, update):
     try:
         uid = update.message.from_user.id
     except AttributeError:
         uid = update.callback_query.from_user.id
     bot.sendChatAction(uid, action=typing)
     bot.sendMessage(uid, text=text, parse_mode="HTML",
                     reply_markup=ik(inlinekeyboard))
     return next_state
Ejemplo n.º 2
0
 def answer_function(bot, update):
     uid = update.message.from_user.id
     bot.sendChatAction(uid, action=typing)
     bot.sendMessage(uid,
                     text=text,
                     parse_mode="HTML",
                     reply_markup=ik(inlinekeyboard))
     # print("going to next_state = " + str(next_state))
     return next_state
Ejemplo n.º 3
0
def cart_user(bot, update, user_data):
    uid = update.message.from_user.id
    cart = user_data["cart"]

    if cart:
        ans(text=texts.cart_welcome, keyboard=main_kbd_user)(bot, update)
        msgs = []
        for item in user_data["cart"].str_repr():
            bot.sendChatAction(uid, action=typing)
            msgs.append(
                bot.sendMessage(uid,
                                text=item,
                                parse_mode="HTML",
                                reply_markup=ik(cart_item_ikbd)))
        user_data["cart_map"] = [msg.message_id for msg in msgs]
        user_data["cart_sum"] = bot.sendMessage(uid,
                                                text=texts.cart_sum %
                                                (len(cart), cart.total),
                                                reply_markup=ik(cart_sum_ikbd),
                                                parse_mode="HTML").message_id
    else:
        ans(text=texts.empty_cart, keyboard=main_kbd_user)(bot, update)
    return "MAIN_MENU_U"
Ejemplo n.º 4
0
def inline(bot, update, user_data):
    uid = update.callback_query.from_user.id
    cqid = update.callback_query.id
    chat_id = update.callback_query.message.chat.id
    message_id = update.callback_query.message.message_id
    act = update.callback_query.data
    try:
        scroll = user_data["scroll"]
        cart = user_data["cart"]
    except KeyError:
        pass

    if act == '>':
        next_e = scroll.get_next()
        if next_e:
            bot.answerCallbackQuery(callback_query_id=cqid)
            bot.editMessageText(text=str(next_e), chat_id=chat_id, message_id=message_id,
                                reply_markup=ik(catalog_ikbd), parse_mode="HTML")
        else:
            bot.answerCallbackQuery(text=texts.last_item, callback_query_id=cqid)

    elif act == '<':
        prev_e = scroll.get_prev()
        if prev_e:
            bot.answerCallbackQuery(callback_query_id=cqid)
            bot.editMessageText(text=str(prev_e), chat_id=chat_id, message_id=message_id,
                                reply_markup=ik(catalog_ikbd), parse_mode="HTML")
        else:
            bot.answerCallbackQuery(text=texts.first_item, callback_query_id=cqid)

    elif act == 'img':
        bot.answerCallbackQuery(callback_query_id=cqid)
        cur = scroll.get_current()
        bot.sendPhoto(chat_id=chat_id, photo=cur.img, caption=cur.name, reply_markup=kbd(to_item_list_kbd))
        # TODO: decrease "stock" value

    elif act == "to_cart":
        current = scroll.get_current()
        if cart[current] < current.stock:
            bot.answerCallbackQuery(callback_query_id=cqid)
            cart += current
            bot.sendMessage(uid, text=texts.to_cart_done, parse_mode="HTML", reply_markup=kbd(to_cart_kbd))
            return "TO_CART_DONE_U"
        else:
            bot.answerCallbackQuery(text=texts.not_enough_in_stock, callback_query_id=cqid)

    elif act == "cart_del":
        bot.answerCallbackQuery(callback_query_id=cqid)
        dn = user_data["cart_map"].index(message_id)
        del user_data["cart_map"][dn]
        del cart[dn]
        user_data["cart"] = cart
        bot.editMessageText(text=texts.cart_item_deleted, chat_id=chat_id, message_id=message_id,
                            reply_markup=ik([]), parse_mode="HTML")

    elif act == "cart-1":
        index = user_data["cart_map"].index(message_id)
        del_item = cart[index]
        if cart[del_item] > 1:
            cart -= del_item
            bot.editMessageText(text=cart.str_repr()[index], chat_id=chat_id, message_id=message_id,
                                reply_markup=ik(cart_item_ikbd), parse_mode="HTML")
            bot.editMessageText(text=texts.cart_sum % (len(cart), cart.total), chat_id=chat_id,
                                message_id=user_data["cart_sum"],
                                reply_markup=ik(cart_sum_ikbd), parse_mode="HTML")
            bot.answerCallbackQuery(callback_query_id=cqid)
        else:
            bot.answerCallbackQuery(text=texts.cart_min_q, callback_query_id=cqid)

    elif act == "cart+1":
        index = user_data["cart_map"].index(message_id)
        add_item = cart[index]
        if cart[add_item] + 1 <= add_item.stock:
            cart += add_item
            bot.editMessageText(text=cart.str_repr()[index], chat_id=chat_id, message_id=message_id,
                                reply_markup=ik(cart_item_ikbd), parse_mode="HTML")
            bot.editMessageText(text=texts.cart_sum % (len(cart), cart.total), chat_id=chat_id,
                                message_id=user_data["cart_sum"],
                                reply_markup=ik(cart_sum_ikbd), parse_mode="HTML")
            bot.answerCallbackQuery(callback_query_id=cqid)
        else:
            bot.answerCallbackQuery(text=texts.not_enough_in_stock, callback_query_id=cqid)

    elif act == "del_all":
        for mid in user_data["cart_map"] + [user_data["cart_sum"]]:
            bot.editMessageText(text=texts.cart_item_deleted, chat_id=chat_id, message_id=mid, parse_mode="HTML")
        bot.answerCallbackQuery(callback_query_id=cqid)
        user_data["cart"] = Cart()
        del user_data["cart_map"]
        del user_data["cart_sum"]

    elif act == "confirm_all":
        bot.answerCallbackQuery(callback_query_id=cqid)
        if "phone" not in user_data:
            bot.sendMessage(uid, text=texts.ask_contact, parse_mode="HTML",
                            reply_markup=kbd(send_contact_kbd + [[texts.main_menu_btn]]))
            return "CHECK_CONTACT_U"
        else:
            bot.sendMessage(uid, text=texts.delivery_methods, reply_markup=kbd(delivery_methods_kbd), parse_mode="HTML")
            return "DELIVERY_U"

    elif act == "edit_order_status":
        bot.answerCallbackQuery(callback_query_id=cqid)
        bot.sendMessage(uid, text=texts.status_prompt, reply_markup=kbd(order_status_kbd), parse_mode="HTML")
        return "EDIT_STATUS_A"