Advertisement
Guest User

Untitled

a guest
Feb 17th, 2020
373
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.64 KB | None | 0 0
  1. import telebot, shelve, sqlite3
  2. import config, dop, payments, adminka, files
  3.  
  4. bot = telebot.TeleBot(config.token)
  5. in_admin = []
  6.  
  7.  
  8.  
  9. @bot.message_handler(content_types=["text"])
  10. def message_send(message):
  11.     if '/start' == message.text:
  12.         if message.chat.username:
  13.             if dop.get_sost(message.chat.id) is True:
  14.                 with shelve.open(files.sost_bd) as bd: del bd[str(message.chat.id)]
  15.             if message.chat.id in in_admin: in_admin.remove(message.chat.id)
  16.             if message.chat.id == config.admin_id and dop.it_first(message.chat.id) is True: in_admin.append(message.chat.id)
  17.             elif dop.it_first(message.chat.id) is True and message.chat.id not in dop.get_adminlist():
  18.                 bot.send_message(message.chat.id, 'Бот ещё не готов к работе!\nЕсли вы являетесь его администратором, то войдите из под аккаунту, id которого указали при запуске бота и подготовьте его к работе!')
  19.             elif dop.check_message('start') is True:
  20.                 key = telebot.types.InlineKeyboardMarkup()
  21.                 key.add(telebot.types.InlineKeyboardButton(text='Перейти к каталогу товаров', callback_data='Перейти к каталогу товаров'))
  22.                 with shelve.open(files.bot_message_bd) as bd: start_message = bd['start']
  23.                 start_message = start_message.replace('username', message.chat.username)
  24.                 start_message = start_message.replace('name', message.from_user.first_name)
  25.                 bot.send_message(message.chat.id, start_message, reply_markup=key) 
  26.             elif dop.check_message('start') is False and message.chat.id in dop.get_adminlist():
  27.                 bot.send_message(message.chat.id, 'Приветствие ещё не добавлено!\nЧтобы его добавить, перейдите в админку по команде /adm и *настройте ответы бота*', parse_mode='Markdown')
  28.  
  29.             dop.user_loger(chat_id=message.chat.id) #логгирование юзеровs
  30.         elif not message.chat.username:
  31.             with shelve.open(files.bot_message_bd) as bd: start_message = bd['userfalse']
  32.             start_message = start_message.replace('uname', message.from_user.first_name)
  33.             bot.send_message(message.chat.id, start_message, parse_mode='Markdown')
  34.            
  35.     elif '/adm' == message.text:
  36.         if not message.chat.id in in_admin:  in_admin.append(message.chat.id)
  37.         adminka.in_adminka(message.chat.id, message.text, message.chat.username, message.from_user.first_name)
  38.  
  39.     elif  message.chat.id in in_admin: adminka.in_adminka(message.chat.id, message.text, message.chat.username, message.from_user.first_name)
  40.  
  41.     elif '/help' == message.text:
  42.         if dop.check_message('help') is True:
  43.             with shelve.open(files.bot_message_bd) as bd: help_message = bd['help']
  44.             bot.send_message(message.chat.id, help_message)
  45.         elif dop.check_message('help') is False and message.chat.id in dop.get_adminlist():
  46.             bot.send_message(message.chat.id, 'Сообщение с помощью ещё не добавлено!\nЧтобы его добавить, перейдите в админку по команде /adm и *настройте ответы бота*', parse_mode='Markdown')
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.     elif dop.get_sost(message.chat.id) is True:
  55.         with shelve.open(files.sost_bd) as bd: sost_num = bd[str(message.chat.id)]
  56.         if sost_num == 22:
  57.             key = telebot.types.InlineKeyboardMarkup()
  58.             try:
  59.                 amount = int(message.text) #проверяется, числительно ли это
  60.                 with open('data/Temp/' + str(message.chat.id) + 'good_name.txt', encoding='utf-8') as f: name_good = f.read()
  61.                 if dop.get_minimum(name_good) <= amount <= dop.amount_of_goods(name_good):
  62.                     sum = dop.order_sum(name_good, amount)
  63.                     if dop.check_vklpayments('qiwi') == '✅' and dop.check_vklpayments('btc') == '✅':
  64.                         b1 = telebot.types.InlineKeyboardButton(text='🥝Qiwi🥝', callback_data='Qiwi')
  65.                         b2 = telebot.types.InlineKeyboardButton(text='💰btc', callback_data='btc')
  66.                         key.add(b1, b2)
  67.                     elif dop.check_vklpayments('qiwi') == '✅': key.add(telebot.types.InlineKeyboardButton(text='🥝Qiwi🥝', callback_data='Qiwi'))
  68.                     elif dop.check_vklpayments('btc') ==  '✅': key.add(telebot.types.InlineKeyboardButton(text='💰btc', callback_data='btc'))
  69.                     key.add(telebot.types.InlineKeyboardButton(text='Вернуться в начало', callback_data = 'Вернуться в начало'))
  70.                     bot.send_message(message.chat.id,'Вы *выбрали*: ' + name_good + '\n*Количеством*: ' + str(amount) + '\n*Сумма* заказа: ' + str(sum) + ' р\nВыбирите, куда желаете оплатить', parse_mode='Markdown', reply_markup=key)
  71.                     with open('data/Temp/' + str(message.chat.id) + '.txt', 'w', encoding='utf-8') as f:
  72.                         f.write(str(amount) + '\n') #записывается количество выбраных товаров
  73.                         f.write(str(sum) + '\n') #записывается стоимость выбранных товаров
  74.                 elif dop.get_minimum(name_good) >= amount:
  75.                     key.add(telebot.types.InlineKeyboardButton(text = 'Вернуться в начало', callback_data = 'Вернуться в начало'))
  76.                     bot.send_message(message.chat.id, 'Выберите и отправьте большее количество!\nМинимальное количество к покупке *' + str(dop.get_minimum(name_good)) + '*', parse_mode='Markdown', reply_markup=key)
  77.                 elif amount >= dop.amount_of_goods(name_good):
  78.                     bot.send_message(message.chat.id, 'Выберите и отправьте меньшее количество!\nМаксимальное количество к покупке *' + str(dop.amount_of_goods(name_good)) + '*', parse_mode='Markdown', reply_markup=key)
  79.             except:
  80.                 key.add(telebot.types.InlineKeyboardButton(text='Вернуться в начало', callback_data='Вернуться в начало'))
  81.                 bot.send_message(message.chat.id, 'Нужное количество выбирать строго в цифрах!', reply_markup=key)
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~инлайн режим~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
  91. @bot.callback_query_handler(func=lambda c:True)
  92. def inline(callback):
  93.     the_goods = dop.get_goods()
  94.     if callback.message.chat.id in in_admin:
  95.         adminka.ad_inline(callback.data, callback.message.chat.id, callback.message.message_id)
  96.  
  97.     elif callback.data == 'Перейти к каталогу товаров':
  98.         con = sqlite3.connect(files.main_db)
  99.         cursor = con.cursor()
  100.         cursor.execute("SELECT name, price FROM goods;")
  101.         key = telebot.types.InlineKeyboardMarkup()
  102.         for name, price in cursor.fetchall():
  103.             key.add(telebot.types.InlineKeyboardButton(text = name, callback_data = name))
  104.         key.add(telebot.types.InlineKeyboardButton(text = 'Вернуться в начало', callback_data = 'Вернуться в начало'))
  105.         con.close()
  106.  
  107.         if dop.get_productcatalog() == None: bot.answer_callback_query(callback_query_id=callback.id, show_alert=True, text='На данный момент в боте не было создано ни одной позиции')
  108.         else:
  109.             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')
  110.             except: pass
  111.  
  112.     elif callback.data in the_goods:
  113.         with open('data/Temp/' + str(callback.message.chat.id) + 'good_name.txt', 'w', encoding='utf-8') as f: f.write(callback.data)
  114.         key = telebot.types.InlineKeyboardMarkup()
  115.         key.add(telebot.types.InlineKeyboardButton(text = 'Купить', callback_data = 'Купить'))
  116.         key.add(telebot.types.InlineKeyboardButton(text = 'Вернуться в начало', callback_data = 'Вернуться в начало'))
  117.         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)
  118.         except: pass
  119.  
  120.     elif callback.data == 'Вернуться в начало':
  121.         if callback.message.chat.username:
  122.             if dop.get_sost(callback.message.chat.id) is True:
  123.                 with shelve.open(files.sost_bd) as bd: del bd[str(callback.message.chat.id)]
  124.             key = telebot.types.InlineKeyboardMarkup()
  125.             key.add(telebot.types.InlineKeyboardButton(text = 'Перейти к каталогу товаров', callback_data = 'Перейти к каталогу товаров'))
  126.             with shelve.open(files.bot_message_bd) as bd: start_message = bd['start']
  127.             start_message = start_message.replace('username', callback.message.chat.username)
  128.             start_message = start_message.replace('name', callback.message.from_user.first_name)
  129.             try: bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.message_id, text=start_message, reply_markup=key)
  130.             except: pass
  131.         elif not callback.message.chat.username:
  132.             with shelve.open(files.bot_message_bd) as bd: start_message = bd['userfalse']
  133.             start_message = start_message.replace('uname', callback.message.from_user.first_name)
  134.             bot.send_message(callback.message.chat.id, start_message, parse_mode='Markdown')
  135.  
  136.     elif callback.data == 'Купить':
  137.         with open('data/Temp/' + str(callback.message.chat.id) + 'good_name.txt', encoding='utf-8') as f: name_good = f.read()
  138.         if dop.amount_of_goods(name_good) == 0: bot.answer_callback_query(callback_query_id=callback.id, show_alert=True, text='В данный момент недоступно к покупке')
  139.         elif dop.payments_checkvkl() == None: bot.answer_callback_query(callback_query_id=callback.id, show_alert=True, text='Оплата на данный момент отключена')
  140.         else:
  141.             key = telebot.types.InlineKeyboardMarkup()
  142.             key.add(telebot.types.InlineKeyboardButton(text = 'Вернуться в начало', callback_data = 'Вернуться в начало'))
  143.             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')
  144.             except: pass
  145.             with shelve.open(files.sost_bd) as bd: bd[str(callback.message.chat.id)] = 22
  146.  
  147.     elif callback.data == 'btc' or callback.data == 'Qiwi':
  148.         if callback.data == 'Qiwi':
  149.             with open('data/Temp/' + str(callback.message.chat.id) + 'good_name.txt', encoding='utf-8') as f: name_good = f.read()
  150.             amount = dop.normal_read_line('data/Temp/' + str(callback.message.chat.id) + '.txt', 0)
  151.             sum = dop.normal_read_line('data/Temp/' + str(callback.message.chat.id) + '.txt', 1)
  152.  
  153.             payments.creat_bill_qiwi(callback.message.chat.id, callback.id, callback.message.message_id, sum, name_good, amount)
  154.         elif callback.data == 'btc':
  155.             sum = dop.normal_read_line('data/Temp/' + str(callback.message.chat.id) + '.txt', 1)
  156.             with open('data/Temp/' + str(callback.message.chat.id) + 'good_name.txt', encoding='utf-8') as f: name_good = f.read()
  157.             amount = dop.normal_read_line('data/Temp/' + str(callback.message.chat.id) + '.txt', 0)
  158.             if int(sum) < 40: bot.answer_callback_query(callback_query_id=callback.id, show_alert=True, text='Сумму менее 100 рублей оплатить в btc невозможно!')
  159.  
  160.             else: payments.creat_bill_btc(callback.message.chat.id, callback.id, callback.message.message_id, sum, name_good, amount)
  161.     elif callback.data == 'Проверить оплату': payments.check_oplata_qiwi(callback.message.chat.id, callback.from_user.username, callback.id, callback.message.from_user.first_name)
  162.    
  163.     elif callback.data == 'Проверить оплату btc': payments.check_oplata_btc(callback.message.chat.id, callback.from_user.username, callback.id, callback.message.from_user.first_name)
  164.  
  165.     elif dop.get_sost(callback.message.chat.id) is True:
  166.         with shelve.open(files.sost_bd) as bd: sost_num = bd[str(callback.message.chat.id)]
  167.         if sost_num == 12: pass
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.    
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~работа с файлами~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
  185. @bot.message_handler(content_types=['document'])
  186. def handle_docs_log(message):
  187.         if message.chat.id in in_admin:
  188.             if shelve.open(files.sost_bd)[str(message.chat.id)] == 12:
  189.                 adminka.new_files(message.document.file_id, message.chat.id)
  190.        
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198. if __name__ == '__main__':
  199.     bot.infinity_polling()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement