PYTHON   15

TeleBot

Guest on 30th April 2022 11:37:40 PM

  1. from flask import Flask, request, abort, Blueprint
  2. from flask_sqlalchemy import SQLAlchemy
  3. from flask_sslify import SSLify
  4. from datetime import datetime
  5. from datetime import timedelta
  6. from telebot import types
  7. from config import *
  8. from include import *
  9. from model.model import *
  10. from button import *
  11. import datetime as DT
  12. import telebot
  13. import requests
  14. import json
  15. import random
  16.  
  17.  
  18. main_bot = Blueprint('main_bot', __name__, template_folder = 'templates', static_folder = 'static')
  19.  
  20.  
  21. bot = telebot.TeleBot(TOKEN)
  22.  
  23.  
  24. def bot_status():
  25.         url = WEBHOOK_URL + '/bot'
  26.         r = requests.post(f"https://api.telegram.org/bot{TOKEN}/getWebhookInfo", headers={'Content-Type': 'application/json'}, params={'url': url})
  27.         res = json.loads(r.text)
  28.  
  29.         if r.status_code == 404:
  30.                 return False
  31.  
  32.         try:
  33.                 if res['result']['url']:
  34.                         return True
  35.                 else:
  36.                         return False
  37.         except Exception as e:
  38.                 return False
  39.  
  40.  
  41.  
  42. def check_subscribŠµ(date):
  43.         end_date = datetime.strptime(str(date), "%Y-%m-%d")
  44.         today = datetime.strptime(str(DT.date.today()), "%Y-%m-%d")
  45.         if today == end_date:
  46.                 return False
  47.         elif today > end_date:
  48.                 return False
  49.         elif today < end_date:
  50.                 return True
  51.  
  52.  
  53. def check_pay_qiwi(code):
  54.         try:
  55.                 phone = qiwi_phone
  56.                 token = qiwi_token
  57.                 s = requests.Session()
  58.                 s.headers['authorization'] = 'Bearer ' + token  
  59.                 parameters = {'rows': '50'}
  60.                 h = s.get('https://edge.qiwi.com/payment-history/v1/persons/' + phone + '/payments', params = parameters)
  61.                 req = json.loads(h.text)
  62.                 for i in range(len(req['data'])):
  63.                         if req['data'][i]['comment'] == str(code) and req['data'][i]['sum']['currency'] == 643:
  64.                                 cash = float(req['data'][i]['sum']['amount'])
  65.                                 return cash
  66.                 return False
  67.  
  68.         except Exception as e:
  69.                 return False
  70.  
  71. #if bot_status() == False:
  72. #       url = WEBHOOK_URL +'/bot'
  73. #       requests.post(f"https://api.telegram.org/bot{TOKEN}/setWebhook", headers={'Content-Type': 'application/json'}, params={'url': url})
  74. )
  75.  
  76.  
  77. def replenishment_btc(message):
  78.         chat_id = message.chat.id
  79.         try:
  80.                 url, code = message.text.split(')
  81.         except ValueError:
  82.                 bot.send_message(chat_id, "Š¯ŠµŠŗŠ¾Ń€Ń€ŠµŠŗŃ‚Š½Ń‹Š¹ чŠµŠŗ!")
  83.                 return
  84.  
  85.         btc_list = Btc_list(chat_id = chat_id, code = code)
  86.         db.session.add(btc_list)
  87.         db.session.commit()
  88.         bot.send_message(chat_id, "Š§ŠµŠŗ Š¾Ń‚ŠæŃ€Š°Š²Š»ŠµŠ½ Š½Š° Š¾Š±Ń€Š°Š±Š¾Ń‚Šŗу!\nŠ–Š´ŠøŃ‚Šµ...")
  89.  
  90.  
  91. def add_url(message):
  92.         url = Url(chat_id = message.chat.id, url = message.text)
  93.         db.session.add(url)
  94.         db.session.commit()
  95.         bot.send_message(message.chat.id, "Š�сыŠ»ŠŗŠ° Š¾Ń‚ŠæŃ€Š°Š²Š»ŠµŠ½Š° Š½Š° Š¾Š±Ń€Š°Š±Š¾Ń‚Šŗу!\tŠ–Š´ŠøŃ‚Šµ...")
  96.  
  97.  
  98.  
  99. @main_bot.route(', "Š�сыŠ»ŠŗŠ° Š¾Ń‚ŠæŃ€Š°Š²Š»ŠµŠ½Š° Š½Š° Š¾Š±Ń€Š°Š±Š¾Ń‚Šŗу!\nŠ–Š´ŠøŃ‚Šµ...")
  100.  
  101.  
  102.  
  103. @main_bot.route('/bot', methods = ['POST'])
  104. def webhook():
  105.     if request.headers.get('content-type') == 'application/json':
  106.         json_string = request.get_data().decode('utf-8')
  107.         update = types.Update.de_json(json_string)
  108.         bot.process_new_updates([update])
  109.         return ''
  110.     else:
  111.         return abort(403)
  112.  
  113.  
  114. @bot.message_handler(commands = ['start'])
  115. def start(message):
  116.         chat_id = message.chat.id
  117.         add_user(chat_id, message.chat.username)
  118.         bot.send_message(chat_id, f"Š”Š¾Š±Ń€Š¾ ŠæŠ¾Š¶Š°Š»Š¾Š²Š°Ń‚ь {message.chat.first_name}", reply_markup = button_menu())
  119.  
  120.  
  121. @bot.message_handler(content_types = ['text'])
  122. def main(message):
  123.         text = message.text
  124.         chat_id = message.chat.id
  125.  
  126.         if text == 'Š¢Š°Ń€ŠøŃ„Ń‹':
  127.                 tariff_btn = types.InlineKeyboardMarkup()
  128.                 month = types.InlineKeyboardButton(text = 'Š¢Š°Ń€ŠøŃ„ Š½Š° 1 Š¼ŠµŃŃ¸Ń† | 300 ā‚½', callback_data = 'month')
  129.                 year = types.InlineKeyboardButton(text = 'Š¢Š°Ń€ŠøŃ„ Š½Š° 1 Š³Š¾Š´ | 1500 ā‚½', callback_data = 'year')
  130.                 tariff_btn.row(month)
  131.                 tariff_btn.row(year)
  132.                 bot.send_message(chat_id, "Š”Š¾ŃŃ‚уŠæŠ½Ń‹Šµ Ń‚Š°Ń€ŠøŃ„Ń‹:", reply_markup = tariff_btn)
  133.  
  134.         elif text == 'ŠŸŃ€Š¾Ń„ŠøŠ»ŃŒ':
  135.                 user = User.query.filter_by(chat_id = chat_id).first()
  136.                
  137.                 balance_up = types.InlineKeyboardMarkup()
  138.                 btn = types.InlineKeyboardButton(text = 'ŠŸŠ¾ŠæŠ¾Š»Š½ŠøŃ‚ŃŒ Š±Š°Š»Š°Š½Ń', callback_data = 'balance_up')
  139.                 balance_up.row(btn)
  140.                
  141.                 if check_subscribŠµ(user.subscribŠµ_date) == False:
  142.                         subscribŠµ = "<b>ŠŸŠ¾Š´ŠæŠøсŠŗŠ° ŠøстŠµŠŗŠ»Š°!</b>"
  143.                        
  144.                 else:
  145.                         subscribŠµ = f"<b>ŠŸŠ¾Š´ŠæŠøсŠŗŠ° Š´ŠµŠ¹ŃŃ‚Š²ŃƒŠµŃ‚: </b> <i>{user.subscribŠµ_date}</i>"
  146.  
  147.                 msg = f"""
  148. <b>Chat Id: </b><code>{chat_id}</code>
  149. <b>Š‘Š°Š»Š°Š½Ń: </b><i>{user.balance}</i> ā‚½
  150. {subscribŠµ}
  151.                 """
  152.                 bot.send_message(chat_id, msg, reply_markup = balance_up, parse_mode = 'HTML')
  153.  
  154.  
  155.         elif text == 'Š˛Ń‚ŠæŃ€Š°Š²ŠøŃ‚ŃŒ ссыŠ»Šŗу':
  156.                 user = User.query.filter_by(chat_id = chat_id).first()
  157.                 if check_subscribŠµ(user.subscribŠµ_date):
  158.                         msg = bot.send_message(chat_id, "Š˛Ń‚ŠæŃ€Š°Š²ŃŒŃ‚Šµ ссыŠ»Šŗу:")
  159.                         bot.register_next_step_handler(msg, add_url)
  160.                 else:
  161.                         bot.send_message(chat_id, "Š£ Š²Š°Ń Š½ŠµŃ‚у ŠæŠ¾Š´ŠæŠøсŠŗŠø Š½Š° Š±Š¾Ń‚Š°!")
  162.  
  163.  
  164.  
  165.  
  166. @bot.callback_query_handler(func=lambda call: True)
  167. def call_func(call):
  168.         chat_id = call.message.chat.id
  169.         message_id = call.message.message_id
  170.        
  171.         if call.data == 'month':
  172.                 btn_buy = types.InlineKeyboardMarkup()
  173.                 btn = types.InlineKeyboardButton(text = 'ŠšŃƒŠæŠøŃ‚ŃŒ', callback_data = "buy_month")
  174.                 back = types.InlineKeyboardButton(text = 'ā¬…ļø¸ Š¯Š°Š·Š°Š´', callback_data = 'back')
  175.                 btn_buy.row(btn)
  176.                 btn_buy.row(back)
  177.                 bot.edit_message_text(chat_id = chat_id, message_id = message_id, text = "Š¢Š°Ń€ŠøŃ„ Š½Š° 1 Š¼ŠµŃŃ¸Ń† | 300 ā‚½", reply_markup = btn_buy)
  178.  
  179.         elif call.data == 'year':
  180.                 btn_buy = types.InlineKeyboardMarkup()
  181.                 btn = types.InlineKeyboardButton(text = 'ŠšŃƒŠæŠøŃ‚ŃŒ', callback_data = "buy_year")
  182.                 back = types.InlineKeyboardButton(text = 'ā¬…ļø¸ Š¯Š°Š·Š°Š´', callback_data = 'back')
  183.                 btn_buy.row(btn)
  184.                 btn_buy.row(back)
  185.                 bot.edit_message_text(chat_id = chat_id, message_id = message_id, text = "Š¢Š°Ń€ŠøŃ„ Š½Š° 1 Š³Š¾Š´ | 1500 ā‚½", reply_markup = btn_buy)
  186.  
  187.         elif call.data == 'back':
  188.                 tariff_btn = types.InlineKeyboardMarkup()
  189.                 month = types.InlineKeyboardButton(text = 'Š¢Š°Ń€ŠøŃ„ Š½Š° 1 Š¼ŠµŃŃ¸Ń† | 300 ā‚½', callback_data = 'month')
  190.                 year = types.InlineKeyboardButton(text = 'Š¢Š°Ń€ŠøŃ„ Š½Š° 1 Š³Š¾Š´ | 1500 ā‚½', callback_data = 'year')
  191.                 tariff_btn.row(month)
  192.                 tariff_btn.row(year)
  193.                 bot.edit_message_text(chat_id = chat_id, message_id = message_id, text = "Š”Š¾ŃŃ‚уŠæŠ½Ń‹Šµ Ń‚Š°Ń€ŠøŃ„Ń‹:", reply_markup = tariff_btn)
  194.  
  195.         elif call.data == 'buy_month':
  196.                 user = User.query.filter_by(chat_id = chat_id).first()
  197.                 date = DT.date.today()
  198.                 if user.balance >= 300:
  199.                         user.balance -= 300
  200.  
  201.                         if user.subscribŠµ_date >= date:
  202.                                 user.subscribŠµ_date += timedelta(days = 30)
  203.                         else:
  204.                                 user.subscribŠµ_date = date + timedelta(days = 30)
  205.  
  206.                         user_session = db.session.merge(user)
  207.                         db.session.add(user_session)
  208.                         db.session.commit()
  209.                         bot.send_message(chat_id, "ŠŸŠ¾Š´ŠæŠøсŠŗŠ° усŠæŠµŃˆŠ½Š¾ Š¾Ń„Š¾Ń€Š¼Š»ŠµŠ½Š°!")
  210.                 else:
  211.                         bot.send_message(chat_id, 'Š£ Š²Š°Ń Š½Šµ Š´Š¾ŃŃ‚Š°Ń‚Š¾Ń‡Š½Š¾ срŠµŠ´ŃŃ‚Š² Š½Š° Š±Š°Š»Š°Š½ŃŠµ, ŠæŠ¾ŠæŠ¾Š»Š½ŠøŃ‚Šµ Š±Š°Š»Š°Š½Ń!')
  212.  
  213.         elif call.data == 'buy_year':
  214.                 user = User.query.filter_by(chat_id = chat_id).first()
  215.                 date = DT.date.today()
  216.                 if user.balance >= 1500:
  217.                         user.balance -= 1500
  218.  
  219.                         if user.subscribŠµ_date >= date:
  220.                                 user.subscribŠµ_date += timedelta(days = 365)
  221.                         else:
  222.                                 user.subscribŠµ_date = date + timedelta(days = 365)
  223.  
  224.                         user_session = db.session.merge(user)
  225.                         db.session.add(user_session)
  226.                         db.session.commit()
  227.                         bot.send_message(chat_id, "ŠŸŠ¾Š´ŠæŠøсŠŗŠ° усŠæŠµŃˆŠ½Š¾ Š¾Ń„Š¾Ń€Š¼Š»ŠµŠ½Š°!")
  228.                 else:
  229.                         bot.send_message(chat_id, 'Š£ Š²Š°Ń Š½Šµ Š´Š¾ŃŃ‚Š°Ń‚Š¾Ń‡Š½Š¾ срŠµŠ´ŃŃ‚Š² Š½Š° Š±Š°Š»Š°Š½ŃŠµ, ŠæŠ¾ŠæŠ¾Š»Š½ŠøŃ‚Šµ Š±Š°Š»Š°Š½Ń!')
  230.  
  231.  
  232.         elif call.data == 'balance_up':
  233.                 balance_up = types.InlineKeyboardMarkup()
  234.                 qiwi = types.InlineKeyboardButton(text = 'QIWI', callback_data = 'qiwi')
  235.                 btc = types.InlineKeyboardButton(text = 'BTC Banker', callback_data = 'btc_banker')
  236.                 balance_up.row(qiwi)
  237.                 balance_up.row(btc)
  238.                 bot.edit_message_text(chat_id = chat_id, message_id = message_id, text = "Š’Ń‹Š±ŠµŃ€ŠøŃ‚Šµ сŠæŠ¾ŃŠ¾Š± Š¾ŠæŠ»Š°Ń‚Ń‹:", reply_markup = balance_up)
  239.  
  240.  
  241.         elif call.data == 'HTML'anker':
  242.                 msg = bot.send_message(chat_id, "Š˛Ń‚ŠæŃ€Š°Š²ŃŒŃ‚Šµ чŠµŠŗ BTC Banker\nŠŸŃ€ŠøŠ¼ŠµŃ€ чŠµŠŗŠ°: https://telegram.me/BTC_CHANGE_BOT?start=c_3f50b6062ace52053cdf09f6af0s58f1")
  243.                 bot.register_next_step_handler(msg, replenishment_btc)
  244.  
  245.  
  246.         elif call.data == 'qiwi':
  247.                 user = User.query.filter_by(chat_id = chat_id).first()
  248.                 code = random.randint(11111111, 99999999)
  249.                 user.code = code
  250.                 db.session.add

Raw Paste


Login or Register to edit or fork this paste. It's free.