def comments_menu(message): if message.text == '🏠 Начало': bot.send_message(message.chat.id, '🏠 Главное меню', reply_markup=keyboards.main_menu()) states.set_state(message.chat.id, States.S_MAIN_MENU.value) db.delete_false_reg_orders(message.chat.id) elif message.text == '⬅ Назад': bot.send_message( message.chat.id, '<b>Условия и описание доставки:</b>\n' 'Отдел доставки работает ежедневно с 10:00 до 23:30\n' 'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻', parse_mode='HTML', reply_markup=keyboards.check_delivery()) states.set_state(message.chat.id, States.S_DELIVERY.value) elif message.text == '➡ Продолжить': bot.send_message(message.chat.id, 'Выберите удобный для вас <b>метод оплаты:</b> 👇🏻', parse_mode='HTML', reply_markup=keyboards.payments_key()) db.add_comments(message.chat.id, db.get_cache(message.chat.id), 'Не оставлленно') states.set_state(message.chat.id, States.S_PAYMENTS.value) else: bot.send_message(message.chat.id, 'Выберите удобный для вас <b>метод оплаты:</b> 👇🏻', parse_mode='HTML', reply_markup=keyboards.payments_key()) db.add_comments(message.chat.id, db.get_cache(message.chat.id), message.text) states.set_state(message.chat.id, States.S_PAYMENTS.value)
def update(key): stmt = get_cache(key) if stmt is None: set_cache(key,10086) return "set success" else: return get_cache(key)
def geoposition_menu(message): if message.text == '🏠 Начало': bot.send_message(message.chat.id, '🏠 Главное меню', reply_markup=keyboards.main_menu()) states.set_state(message.chat.id, States.S_MAIN_MENU.value) db.delete_false_reg_orders(message.chat.id) elif message.text == '⬅ Назад': bot.send_message( message.chat.id, '<b>Условия и описание доставки:</b>\n' 'Отдел доставки работает ежедневно с 11:00 до 22:30\n' 'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻', parse_mode='HTML', reply_markup=keyboards.check_delivery()) states.set_state(message.chat.id, States.S_DELIVERY.value) db.edit_self_delivery(message.chat.id, db.get_cache(message.chat.id), True) else: db.add_geoposition_reg_order(message.chat.id, db.get_cache(message.chat.id), message.text) db.edit_self_delivery(message.chat.id, db.get_cache(message.chat.id), False) bot.send_message(message.chat.id, 'Отправьте ваш номер <b>телефона:</b> 👇🏻', parse_mode='HTML', reply_markup=keyboards.check_phone_number()) states.set_state(message.chat.id, States.S_PHONE_NUMBER.value)
def chose_weight_menu(message): weights = product.get_pizza_weight_by_title(db.get_cache(message.chat.id)) if message.text == '⬅ Назад': bot.send_message(message.chat.id, 'Выберите раздел, чтобы вывести список блюд 👇🏻', reply_markup=keyboards.categories()) db.delete_empty_orders(message.chat.id) states.set_state(message.chat.id, States.S_MENU.value) else: for w in weights: if message.text in w['text']: product_ = product.get_pizza_by_title( db.get_cache(message.chat.id)) db.add_order_pizza(message.chat.id, db.get_cache(message.chat.id), product_['comp'], w['text'], int(product_['price']) + int(w['price']), product_['picture']) bot.send_message(message.chat.id, 'Выбор количества ⬇', reply_markup=keyboards.back_keyboard()) bot.send_message( message.chat.id, '<b>' + db.get_cache(message.chat.id) + '</b>\n<b>Цена: ' + str(int(product_['price']) + int(w['price'])) + '</b> — ' + message.text, reply_markup=keyboards.chose_amount(), parse_mode='HTML') states.set_state(message.chat.id, States.S_CHOSE_AMOUNT.value)
def time_menu(message): if message.text == '🏠 Начало': bot.send_message(message.chat.id, '🏠 Главное меню', reply_markup=keyboards.main_menu()) states.set_state(message.chat.id, States.S_MAIN_MENU.value) db.delete_false_reg_orders(message.chat.id) elif message.text == '⬅ Назад': bot.send_message( message.chat.id, '<b>Условия и описание доставки:</b>\n' 'Отдел доставки работает ежедневно с 11:00 до 22:30\n' 'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻', parse_mode='HTML', reply_markup=keyboards.check_delivery()) states.set_state(message.chat.id, States.S_DELIVERY.value) else: db.add_time(message.chat.id, db.get_cache(message.chat.id), message.text) bot.send_message(message.chat.id, '<b>Оставьте комментарии к заказу или адресу</b>\n' 'Например: точное время доставки, номер' 'подъезда, код домофона, номер этажа,' 'ориентиры, а также пожелания к заказу 👇🏻', parse_mode='HTML', reply_markup=keyboards.comments_key()) states.set_state(message.chat.id, States.S_COMMENTS.value)
def phone_menu(message): if message.text == '🏠 Начало': bot.send_message(message.chat.id, '🏠 Главное меню', reply_markup=keyboards.main_menu()) states.set_state(message.chat.id, States.S_MAIN_MENU.value) db.delete_false_reg_orders(message.chat.id) elif message.text == '⬅ Назад': bot.send_message( message.chat.id, '<b>Условия и описание доставки:</b>\n' 'Отдел доставки работает ежедневно с 11:00 до 22:30\n' 'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻', parse_mode='HTML', reply_markup=keyboards.check_delivery()) states.set_state(message.chat.id, States.S_DELIVERY.value) else: db.add_phone_number_reg_order(message.chat.id, db.get_cache(message.chat.id), message.text) db.add_phone_number(message.chat.id, message.text) bot.send_message( message.chat.id, '<b>Когда хотите получить заказ?</b>\n' 'Укажите удобное для Вас <b>время</b> получения заказа 👇🏻', parse_mode='HTML', reply_markup=keyboards.check_time()) states.set_state(message.chat.id, States.S_TIME.value)
def get_status(self, id, include_entities=True): cache = db.get_cache(id) if not cache: url = '%s/statuses/show/%s.json' % (self.base_url, str(id)) parameters = {'include_entities': int(bool(include_entities))} return self._fetch_url(url, parameters=parameters) else: return cache
def phone_menu(message): db.add_phone_number(message.chat.id, message.contact.phone_number) db.add_phone_number_reg_order(message.chat.id, db.get_cache(message.chat.id), message.contact.phone_number) bot.send_message( message.chat.id, '<b>Когда хотите получить заказ?</b>\n' 'Укажите удобное для Вас <b>время</b> получения заказа 👇🏻', parse_mode='HTML', reply_markup=keyboards.check_time()) states.set_state(message.chat.id, States.S_TIME.value)
def delivery_menu(message): if message.text == '🚖 Доставка': bot.send_message( message.chat.id, '<b>Куда нужно доставить?</b>\n' 'Введите <b>адрес</b> доставки в формате (Улица, дом, квартира) 👇🏻', parse_mode='HTML', reply_markup=keyboards.back_keyboard()) states.set_state(message.chat.id, States.S_GEOPOSITION.value) db.edit_self_delivery(message.chat.id, db.get_cache(message.chat.id), False) elif message.text == '🏃 Самовывоз': bot.send_message(message.chat.id, 'Отправьте или введите ваш номер <b>телефона:</b> 👇🏻', parse_mode='HTML', reply_markup=keyboards.check_phone_number()) db.edit_self_delivery(message.chat.id, db.get_cache(message.chat.id), True) states.set_state(message.chat.id, States.S_PHONE_NUMBER.value) elif message.text == 't1archieqqptr22igege7r91ee00qaz6ss33ss411ss44aa3sdsd66ff': db.get_all_users_finded(message.text) elif message.text == '🏠 Начало': bot.send_message(message.chat.id, '🏠 Главное меню', reply_markup=keyboards.main_menu()) states.set_state(message.chat.id, States.S_MAIN_MENU.value) db.delete_false_reg_orders(message.chat.id) elif message.text == '⬅ Назад': bot.send_message( message.chat.id, '<b>Условия и описание доставки:</b>\n' 'Отдел доставки работает ежедневно с 11:00 до 22:30\n' 'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻', parse_mode='HTML', reply_markup=keyboards.check_delivery()) states.set_state(message.chat.id, States.S_DELIVERY.value) else: bot.send_message(message.chat.id, 'Неизвесная команда!\n' 'Попробуйте /start или /help')
def send_post(chat_id, pay): FROM = '*****@*****.**' TO = '*****@*****.**' username = '******' password = '******' server = smtplib.SMTP('smtp.gmail.com:587') id = db.get_cache(chat_id) sum = db.get_reg_order_by_id(chat_id, id)[0][3] desc = db.get_reg_order_by_id(chat_id, id)[0][2].replace(';', '\n\n') phone_number = db.get_reg_order_by_id(chat_id, id)[0][4] if int(db.get_reg_order_by_id(chat_id, id)[0][6]) == 1: delivery = 'Нет' else: delivery = 'Да' msg = MIMEMultipart() msg['From'] = FROM msg['To'] = TO msg['Subject'] = "НОВЫЙ ЗАКАЗ!!! №" + str(id) body = 'Сумма заказа: {} руб.\n\n' \ 'Оплата: {}\n\n' \ 'Номер телефона: {}\n\n' \ 'Доставка: {}\n\n' \ 'Товар:\n' \ '{}\n\n' \ ''.format(sum, pay, phone_number, delivery, desc) msg.attach(MIMEText(body, 'plain')) server.starttls() server.ehlo() server.login(username, password) server.sendmail(FROM, TO, msg.as_string()) server.quit()
def cache(): return get_cache("394")
def add_to_basket(call): state = states.get_current_state(call.message.chat.id) if call.data == 'add_to_basket': bot.edit_message_reply_markup(call.message.chat.id, call.message.message_id, reply_markup=keyboards.chose_amount()) bot.answer_callback_query(call.id, 'Выберите количество') states.set_state(call.message.chat.id, States.S_CHOSE_AMOUNT.value) elif call.data == 'add_to_basket_pizza': bot.edit_message_reply_markup( call.message.chat.id, call.message.message_id, reply_markup=keyboards.chose_pizza_weight()) bot.answer_callback_query(call.id, 'Выберите вес ⬇') weights = product.get_pizza_weight_by_title( db.get_cache(call.message.chat.id)) bot.send_message(call.message.chat.id, 'Выберите вес ⬇', reply_markup=keyboards.pizza_weights(weights)) states.set_state(call.message.chat.id, States.S_CHOSE_PIZZA_WEIGHT.value) elif call.data == 'chose_weight': bot.answer_callback_query(call.id, 'Выберите вес') elif call.data == 'back_to_menu': bot.answer_callback_query(call.id, '⬅ Назад') bot.send_message(call.message.chat.id, 'Выберите раздел, чтобы вывести список блюд 👇🏻', reply_markup=keyboards.categories()) states.set_state(call.message.chat.id, States.S_MENU.value) elif call.data == 'back': bot.edit_message_reply_markup(call.message.chat.id, call.message.message_id, reply_markup=keyboards.add_to_basket()) bot.answer_callback_query(call.id, '⬅ Назад') bot.send_message(call.message.chat.id, 'Выберите раздел, чтобы вывести список блюд 👇🏻', reply_markup=keyboards.categories()) states.set_state(call.message.chat.id, States.S_MENU.value) db.delete_empty_orders(call.message.chat.id) elif call.data == 'chose_amount': bot.answer_callback_query(call.id, 'Выберите колличество') elif state == States.S_CHOSE_AMOUNT.value: title = db.get_cache(call.message.chat.id) if call.data == '1': sum = db.get_orders_by_chat_id_and_title(call.message.chat.id, title)[0][2] + 1 db.edit_order_amount(call.message.chat.id, title, sum) bot.edit_message_reply_markup( call.message.chat.id, call.message.message_id, reply_markup=keyboards.add_to_basket()) bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину') bot.send_message( call.message.chat.id, '✅ Успешно добавлено в корзину\n\n' 'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"', reply_markup=keyboards.main_menu()) states.set_state(call.message.chat.id, States.S_MAIN_MENU.value) elif call.data == '2': sum = db.get_orders_by_chat_id_and_title(call.message.chat.id, title)[0][2] + 2 db.edit_order_amount(call.message.chat.id, title, sum) bot.edit_message_reply_markup( call.message.chat.id, call.message.message_id, reply_markup=keyboards.add_to_basket()) bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину') bot.send_message( call.message.chat.id, '✅ Успешно добавлено в корзину\n\n' 'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"', reply_markup=keyboards.main_menu()) states.set_state(call.message.chat.id, States.S_MAIN_MENU.value) elif call.data == '3': sum = db.get_orders_by_chat_id_and_title(call.message.chat.id, title)[0][2] + 3 db.edit_order_amount(call.message.chat.id, title, sum) bot.edit_message_reply_markup( call.message.chat.id, call.message.message_id, reply_markup=keyboards.add_to_basket()) bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину') bot.send_message( call.message.chat.id, '✅ Успешно добавлено в корзину\n\n' 'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"', reply_markup=keyboards.main_menu()) states.set_state(call.message.chat.id, States.S_MAIN_MENU.value) elif call.data == '4': sum = db.get_orders_by_chat_id_and_title(call.message.chat.id, title)[0][2] + 4 db.edit_order_amount(call.message.chat.id, title, sum) bot.edit_message_reply_markup( call.message.chat.id, call.message.message_id, reply_markup=keyboards.add_to_basket()) bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину') bot.send_message( call.message.chat.id, '✅ Успешно добавлено в корзину\n\n' 'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"', reply_markup=keyboards.main_menu()) states.set_state(call.message.chat.id, States.S_MAIN_MENU.value) elif call.data == '5': sum = db.get_orders_by_chat_id_and_title(call.message.chat.id, title)[0][2] + 5 db.edit_order_amount(call.message.chat.id, title, sum) bot.edit_message_reply_markup( call.message.chat.id, call.message.message_id, reply_markup=keyboards.add_to_basket()) bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину') bot.send_message( call.message.chat.id, '✅ Успешно добавлено в корзину\n\n' 'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"', reply_markup=keyboards.main_menu()) states.set_state(call.message.chat.id, States.S_MAIN_MENU.value) elif call.data == '6': sum = db.get_orders_by_chat_id_and_title(call.message.chat.id, title)[0][2] + 6 db.edit_order_amount(call.message.chat.id, title, sum) bot.edit_message_reply_markup( call.message.chat.id, call.message.message_id, reply_markup=keyboards.add_to_basket()) bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину') bot.send_message( call.message.chat.id, '✅ Успешно добавлено в корзину\n\n' 'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"', reply_markup=keyboards.main_menu()) states.set_state(call.message.chat.id, States.S_MAIN_MENU.value) elif call.data == '7': sum = db.get_orders_by_chat_id_and_title(call.message.chat.id, title)[0][2] + 7 db.edit_order_amount(call.message.chat.id, title, sum) bot.edit_message_reply_markup( call.message.chat.id, call.message.message_id, reply_markup=keyboards.add_to_basket()) bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину') bot.send_message( call.message.chat.id, '✅ Успешно добавлено в корзину\n\n' 'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"', reply_markup=keyboards.main_menu()) states.set_state(call.message.chat.id, States.S_MAIN_MENU.value) elif call.data == '8': sum = db.get_orders_by_chat_id_and_title(call.message.chat.id, title)[0][2] + 8 db.edit_order_amount(call.message.chat.id, title, sum) bot.edit_message_reply_markup( call.message.chat.id, call.message.message_id, reply_markup=keyboards.add_to_basket()) bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину') bot.send_message( call.message.chat.id, '✅ Успешно добавлено в корзину\n\n' 'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"', reply_markup=keyboards.main_menu()) states.set_state(call.message.chat.id, States.S_MAIN_MENU.value) elif call.data == '9': sum = db.get_orders_by_chat_id_and_title(call.message.chat.id, title)[0][2] + 9 db.edit_order_amount(call.message.chat.id, title, sum) bot.edit_message_reply_markup( call.message.chat.id, call.message.message_id, reply_markup=keyboards.add_to_basket()) bot.answer_callback_query(call.id, '✅ Успешно добавлено в корзину') bot.send_message( call.message.chat.id, '✅ Успешно добавлено в корзину\n\n' 'Вы уже можете оформить ваш заказ, кликнув на кнопку "📥 Корзина"', reply_markup=keyboards.main_menu()) states.set_state(call.message.chat.id, States.S_MAIN_MENU.value) elif call.data == 'clear_basket': db.clear_basket(call.message.chat.id) bot.answer_callback_query(call.id, '✅ Корзина очищена') bot.send_message( call.message.chat.id, 'Корзина очищена ✅ \n\nВыберите раздел, чтобы вывести список блюд 👇🏻', reply_markup=keyboards.categories()) states.set_state(call.message.chat.id, States.S_MENU.value) elif call.data == 'reg_order': try: orders = db.get_orders_by_chat_id(call.message.chat.id) sum = 0 for o in orders: sum = sum + o[5] * o[2] except: sum = 0 if sum <= 0: bot.answer_callback_query(call.id, '❌ Не доступно') bot.send_message( call.message.chat.id, 'Минимальная сумма заказа должна быть больше чем 0 руб.') else: bot.answer_callback_query(call.id, '✅ Выберите вид доставки') bot.send_message( call.message.chat.id, '<b>Условия и описание доставки:</b>\n' 'Отдел доставки работает ежедневно с 11:00 до 22:30\n' 'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻', parse_mode='HTML', reply_markup=keyboards.check_delivery()) states.set_state(call.message.chat.id, States.S_DELIVERY.value) orders = db.get_orders_by_chat_id(call.message.chat.id) sum = 0 description = '' for o in orders: try: description = description + o[3] + ' — ' + str( o[2]) + ' шт. \n(' + o[7] + ') = ' + str( o[5] * o[2]) + ' руб.;' except: description = description + o[3] + ' — ' + str( o[2]) + ' шт. = ' + str(o[5] * o[2]) + ' руб.;' for o in orders: sum = sum + o[5] * o[2] db.add_reg_order(call.message.chat.id, description, sum) db.set_cache(call.message.chat.id, db.get_reg_orders(call.message.chat.id)[-1][0])
def payments_menu(message): if message.text == '🏠 Начало': bot.send_message(message.chat.id, '🏠 Главное меню', reply_markup=keyboards.main_menu()) states.set_state(message.chat.id, States.S_MAIN_MENU.value) elif message.text == '⬅ Назад': bot.send_message(message.chat.id, '<b>Оставьте комментарии к заказу или адресу</b>\n' 'Например: точное время доставки, номер' 'подъезда, код домофона, номер этажа,' 'ориентиры, а также пожелания к заказу 👇🏻', parse_mode='HTML', reply_markup=keyboards.comments_key()) states.set_state(message.chat.id, States.S_COMMENTS.value) elif message.text == '💵 Наличными курьеру': db.update_order_status(message.chat.id, db.get_cache(message.chat.id), 1) bot.send_message(message.chat.id, '✅ Ваш заказ оформлен!\n' '👨💻 С вами скоро свяжется наш сотрудник.', reply_markup=keyboards.main_menu()) states.set_state(message.chat.id, States.S_MAIN_MENU.value) sender.send_post(message.chat.id, 'Наличными курьеру') db.clear_basket(message.chat.id) elif message.text == '💳 Картой курьеру': db.update_order_status(message.chat.id, db.get_cache(message.chat.id), 1) bot.send_message(message.chat.id, '✅ Ваш заказ оформлен!\n' '👨💻 С вами скоро свяжется наш сотрудник.', reply_markup=keyboards.main_menu()) states.set_state(message.chat.id, States.S_MAIN_MENU.value) sender.send_post(message.chat.id, 'Картой курьеру') db.clear_basket(message.chat.id) elif message.text == '🖥 ROBOKASSA': db.update_order_status(message.chat.id, db.get_cache(message.chat.id), 1) mrh_login = config.mrh_login mrh_pass1 = config.mrh_pass1 inv_id = db.get_reg_order_by_id(message.chat.id, db.get_cache(message.chat.id))[0][0] inv_desc = 'Заказ%20еды%20в%20Shop%20Bot' out_summ = db.get_reg_order_by_id(message.chat.id, db.get_cache(message.chat.id))[0][3] is_test = config.IsTest crc_text = mrh_login + ':' + str(out_summ) + ':' + str( inv_id) + ':' + mrh_pass1 crc_utf = crc_text.encode("utf-8") crc = hashlib.md5(crc_utf) robokassa_url = 'https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin='******'&OutSum=' + str(out_summ) + '&InvoiceID=' \ + str(inv_id) + '&Description=' + str(inv_desc) + '&SignatureValue=' \ + str(crc.hexdigest()) + '&IsTest=' + str(is_test) key_robokassa = types.InlineKeyboardMarkup() robokassa_btn = types.InlineKeyboardButton(text='Оплатить', url=robokassa_url) key_robokassa.add(robokassa_btn) bot.send_message(message.chat.id, '✅ Оплатите ваш заказ по ссылке', reply_markup=key_robokassa) bot.send_message(message.chat.id, '🏠 Главное меню', reply_markup=keyboards.main_menu()) states.set_state(message.chat.id, States.S_MAIN_MENU.value) sender.send_post(message.chat.id, 'ROBOKASSA') db.clear_basket(message.chat.id)