def message_send(message): if '/start' == message.text: if message.chat.username: print('*' * 88) if dop.get_sost(message.chat.id) is True: with shelve.open(files.sost_bd) as bd: del bd[str(message.chat.id)] if message.chat.id in in_admin: in_admin.remove(message.chat.id) print("User_id = {usr}\nadm_id = {ad}".format(usr=message.chat.id, ad=config.admin_id)) if message.chat.id == config.admin_id and dop.it_first( message.chat.id) is True: in_admin.append(message.chat.id) elif dop.it_first( message.chat.id ) is True and message.chat.id not in dop.get_adminlist(): bot.send_message( message.chat.id, 'Бот ещё не готов к работе!\nЕсли вы являетесь его администратором, то войдите из под аккаунту, id которого указали при запуске бота и подготовьте его к работе!' ) elif dop.check_message('start') is True: key = telebot.types.InlineKeyboardMarkup() key.add( telebot.types.InlineKeyboardButton( text='Перейти к каталогу товаров', callback_data='Перейти к каталогу товаров')) with shelve.open(files.bot_message_bd) as bd: start_message = bd['start'] start_message = start_message.replace('username', message.chat.username) start_message = start_message.replace( 'name', message.from_user.first_name) bot.send_message(message.chat.id, start_message, reply_markup=key) elif dop.check_message( 'start') is False and message.chat.id in dop.get_adminlist( ): bot.send_message( message.chat.id, 'Приветствие ещё не добавлено!\nЧтобы его добавить, перейдите в админку по команде /adm и *настройте ответы бота*', parse_mode='Markdown') dop.user_loger(chat_id=message.chat.id) #логгирование юзеровs elif not message.chat.username: with shelve.open(files.bot_message_bd) as bd: start_message = bd['userfalse'] start_message = start_message.replace('uname', message.from_user.first_name) bot.send_message(message.chat.id, start_message, parse_mode='Markdown') elif '/adm' == message.text: if not message.chat.id in in_admin: in_admin.append(message.chat.id) adminka.in_adminka(message.chat.id, message.text, message.chat.username, message.from_user.first_name) elif message.chat.id in in_admin: adminka.in_adminka(message.chat.id, message.text, message.chat.username, message.from_user.first_name) elif '/help' == message.text: if dop.check_message('help') is True: with shelve.open(files.bot_message_bd) as bd: help_message = bd['help'] bot.send_message(message.chat.id, help_message) elif dop.check_message( 'help') is False and message.chat.id in dop.get_adminlist(): bot.send_message( message.chat.id, 'Сообщение с помощью ещё не добавлено!\nЧтобы его добавить, перейдите в админку по команде /adm и *настройте ответы бота*', parse_mode='Markdown') elif dop.get_sost(message.chat.id) is True: with shelve.open(files.sost_bd) as bd: sost_num = bd[str(message.chat.id)] if sost_num == 22: key = telebot.types.InlineKeyboardMarkup() try: amount = int(message.text) #проверяется, числительно ли это with open('/home/tgshop/shop/data/hTemp/' + str(message.chat.id) + 'good_name.txt', encoding='utf-8') as f: name_good = f.read() if dop.get_minimum(name_good) <= amount <= dop.amount_of_goods( name_good): sum = dop.order_sum(name_good, amount) if dop.check_vklpayments( 'qiwi') == '✅' and dop.check_vklpayments( 'btc') == '✅': b1 = telebot.types.InlineKeyboardButton( text='🥝Qiwi🥝', callback_data='Qiwi') b2 = telebot.types.InlineKeyboardButton( text='💰btc', callback_data='btc') key.add(b1, b2) elif dop.check_vklpayments('qiwi') == '✅': key.add( telebot.types.InlineKeyboardButton( text='🥝Qiwi🥝', callback_data='Qiwi')) elif dop.check_vklpayments('btc') == '✅': key.add( telebot.types.InlineKeyboardButton( text='💰btc', callback_data='btc')) key.add( telebot.types.InlineKeyboardButton( text='Вернуться в начало', callback_data='Вернуться в начало')) bot.send_message(message.chat.id, 'Вы *выбрали*: ' + name_good + '\n*Количеством*: ' + str(amount) + '\n*Сумма* заказа: ' + str(sum) + ' р\nВыбирите, куда желаете оплатить', parse_mode='Markdown', reply_markup=key) with open('/home/tgshop/shop/data/hTemp/' + str(message.chat.id) + '.txt', 'w', encoding='utf-8') as f: f.write( str(amount) + '\n') #записывается количество выбраных товаров f.write( str(sum) + '\n') #записывается стоимость выбранных товаров elif dop.get_minimum(name_good) >= amount: key.add( telebot.types.InlineKeyboardButton( text='Вернуться в начало', callback_data='Вернуться в начало')) bot.send_message( message.chat.id, 'Выберите и отправьте большее количество!\nМинимальное количество к покупке *' + str(dop.get_minimum(name_good)) + '*', parse_mode='Markdown', reply_markup=key) elif amount >= dop.amount_of_goods(name_good): bot.send_message( message.chat.id, 'Выберите и отправьте меньшее количество!\nМаксимальное количество к покупке *' + str(dop.amount_of_goods(name_good)) + '*', parse_mode='Markdown', reply_markup=key) except: key.add( telebot.types.InlineKeyboardButton( text='Вернуться в начало', callback_data='Вернуться в начало')) bot.send_message(message.chat.id, 'Нужное количество выбирать строго в цифрах!', reply_markup=key)
def inline(callback): the_goods = dop.get_goods() if callback.message.chat.id in in_admin: adminka.ad_inline(callback.data, callback.message.chat.id, callback.message.message_id) elif callback.data == 'Перейти к каталогу товаров': con = sqlite3.connect(files.main_db) cursor = con.cursor() cursor.execute("SELECT name, price FROM goods;") key = telebot.types.InlineKeyboardMarkup() for name, price in cursor.fetchall(): key.add( telebot.types.InlineKeyboardButton(text=name, callback_data=name)) key.add( telebot.types.InlineKeyboardButton( text='Вернуться в начало', callback_data='Вернуться в начало')) con.close() if dop.get_productcatalog() == None: bot.answer_callback_query( callback_query_id=callback.id, show_alert=True, text='На данный момент в боте не было создано ни одной позиции' ) else: try: bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.message_id, text=dop.get_productcatalog(), reply_markup=key, parse_mode='Markdown') except: pass elif callback.data in the_goods: with open('/home/tgshop/shop/data/hTemp/' + str(callback.message.chat.id) + 'good_name.txt', 'w', encoding='utf-8') as f: f.write(callback.data) key = telebot.types.InlineKeyboardMarkup() key.add( telebot.types.InlineKeyboardButton(text='Купить', callback_data='Купить')) key.add( telebot.types.InlineKeyboardButton( text='Вернуться в начало', callback_data='Вернуться в начало')) try: bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.message_id, text=dop.get_description(callback.data), reply_markup=key) except: pass elif callback.data == 'Вернуться в начало': if callback.message.chat.username: if dop.get_sost(callback.message.chat.id) is True: with shelve.open(files.sost_bd) as bd: del bd[str(callback.message.chat.id)] key = telebot.types.InlineKeyboardMarkup() key.add( telebot.types.InlineKeyboardButton( text='Перейти к каталогу товаров', callback_data='Перейти к каталогу товаров')) with shelve.open(files.bot_message_bd) as bd: start_message = bd['start'] start_message = start_message.replace( 'username', callback.message.chat.username) start_message = start_message.replace( 'name', callback.message.from_user.first_name) try: bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.message_id, text=start_message, reply_markup=key) except: pass elif not callback.message.chat.username: with shelve.open(files.bot_message_bd) as bd: start_message = bd['userfalse'] start_message = start_message.replace( 'uname', callback.message.from_user.first_name) bot.send_message(callback.message.chat.id, start_message, parse_mode='Markdown') elif callback.data == 'Купить': with open('/home/tgshop/shop/data/hTemp/' + str(callback.message.chat.id) + 'good_name.txt', encoding='utf-8') as f: name_good = f.read() if dop.amount_of_goods(name_good) == 0: bot.answer_callback_query( callback_query_id=callback.id, show_alert=True, text='В данный момент недоступно к покупке') elif dop.payments_checkvkl() == None: bot.answer_callback_query(callback_query_id=callback.id, show_alert=True, text='Оплата на данный момент отключена') else: key = telebot.types.InlineKeyboardMarkup() key.add( telebot.types.InlineKeyboardButton( text='Вернуться в начало', callback_data='Вернуться в начало')) try: bot.edit_message_text( chat_id=callback.message.chat.id, message_id=callback.message.message_id, text= 'Введите *количество* товаров к покупке\n*Минимальное* количество к покупке: ' + str(dop.get_minimum(name_good)) + '\n*Максимальное* доступное: ' + str(dop.amount_of_goods(name_good)), reply_markup=key, parse_mode='Markdown') except: pass with shelve.open(files.sost_bd) as bd: bd[str(callback.message.chat.id)] = 22 elif callback.data == 'btc' or callback.data == 'Qiwi': if callback.data == 'Qiwi': with open('/home/tgshop/shop/data/hTemp/' + str(callback.message.chat.id) + 'good_name.txt', encoding='utf-8') as f: name_good = f.read() amount = dop.normal_read_line( '/home/tgshop/shop/data/hTemp/' + str(callback.message.chat.id) + '.txt', 0) sum = dop.normal_read_line( '/home/tgshop/shop/data/hTemp/' + str(callback.message.chat.id) + '.txt', 1) payments.creat_bill_qiwi(callback.message.chat.id, callback.id, callback.message.message_id, sum, name_good, amount) elif callback.data == 'btc': sum = dop.normal_read_line( '/home/tgshop/shop/data/hTemp/' + str(callback.message.chat.id) + '.txt', 1) with open('/home/tgshop/shop/data/hTemp/' + str(callback.message.chat.id) + 'good_name.txt', encoding='utf-8') as f: name_good = f.read() amount = dop.normal_read_line( '/home/tgshop/shop/data/hTemp/' + str(callback.message.chat.id) + '.txt', 0) if int(sum) < 40: bot.answer_callback_query( callback_query_id=callback.id, show_alert=True, text='Сумму менее 100 рублей оплатить в btc невозможно!') else: payments.creat_bill_btc(callback.message.chat.id, callback.id, callback.message.message_id, sum, name_good, amount) elif callback.data == 'Проверить оплату': payments.check_oplata_qiwi(callback.message.chat.id, callback.from_user.username, callback.id, callback.message.from_user.first_name) elif callback.data == 'Проверить оплату btc': payments.check_oplata_btc(callback.message.chat.id, callback.from_user.username, callback.id, callback.message.from_user.first_name) elif dop.get_sost(callback.message.chat.id) is True: with shelve.open(files.sost_bd) as bd: sost_num = bd[str(callback.message.chat.id)] if sost_num == 12: pass