Advertisement
Guest User

Untitled

a guest
May 8th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.37 KB | None | 0 0
  1. import vk_requests
  2. import MySQLdb
  3.  
  4. import os
  5.  
  6. os.environ["NLS_LANG"] = "AMERICAN.AL32UTF8"
  7.  
  8. import vkcoin
  9. import random
  10.  
  11. from vbio import VkBot, LongPollClient
  12. from vbio.types import VkKeyboardMarkup, VkKeyboardButton, VkColor
  13.  
  14. import configparser
  15. config = configparser.ConfigParser()
  16. config.read('config.ini')
  17. moneyid = config.get('connect', 'userid')
  18. vkcoin_token = config.get('connect', 'vk_coin')
  19. vk_session_token = config.get('connect', 'vk_group')
  20. vk_token = config.get('connect', 'vk_token')
  21. dbip = config.get('db', 'ip')
  22. dbuser = config.get('db', 'dbuser')
  23. dbpass = config.get('db', 'dbpass')
  24. dbtable = config.get('db', 'dbtable')
  25.  
  26. conn = MySQLdb.connect(dbip, dbuser, dbpass, dbtable, charset='utf8', use_unicode=True)
  27. cursor = conn.cursor()
  28. api = vk_requests.create_api(
  29. service_token=vk_session_token)
  30.  
  31. callback = vkcoin.VKCoin(user_id=543869137,key=vkcoin_token, token=vk_token)
  32. bot = VkBot(api=api)
  33. handler = LongPollClient(bot)
  34. merchant = vkcoin.VKCoin(user_id=int(moneyid),
  35. key=vkcoin_token)
  36.  
  37.  
  38. @merchant.payment_handler(handler_type='callback')
  39. def payment_received(data):
  40. user_id = int(data['user_from'])
  41. amount = float(data['amount']) / 1000
  42. usercheck = checkuser(user_id)
  43. if usercheck != None:
  44. api.messages.send(
  45. user_id=user_id,
  46. random_id=random.randint(-2147483648, 2147483647),
  47. message=f'{usercheck[4]}, ваш баланс пополнен на сумму: {int(amount)} coins🤑'
  48. )
  49. api.messages.send(
  50. user_id=user_id,
  51. random_id=random.randint(-2147483648, 2147483647),
  52. sticker_id=96
  53. )
  54. cursor.execute("""UPDATE users SET balance=%s WHERE id=%s""", (usercheck[1] + amount, user_id))
  55. conn.commit()
  56.  
  57.  
  58. callback.run_websocket()
  59.  
  60.  
  61. def keyboardout():
  62. keyboard = VkKeyboardMarkup(stack_size=2)
  63. keyboard.row(
  64. VkKeyboardButton('Кейсы',
  65. color='primary', # Можно использовать как VkColor так и текст
  66. payload={'command': 'cases'}),
  67. VkKeyboardButton('Баланс',
  68. color='primary',
  69. payload={'command': 'balance'})
  70. )
  71. keyboard.row(
  72. VkKeyboardButton('Пополнить',
  73. color='positive', # Можно использовать как VkColor так и текст
  74. payload={'command': 'upbal'}),
  75. VkKeyboardButton('Вывести VKC',
  76. color='negative',
  77. payload={'command': 'downbal'})
  78. )
  79. return keyboard()
  80.  
  81.  
  82. def caseskeyboard():
  83. keyboard = VkKeyboardMarkup(stack_size=3)
  84. keyboard.row(
  85. VkKeyboardButton('Кейс Маленький',
  86. color='primary', # Можно использовать как VkColor так и текст
  87. payload={'command': 'bomjcase'}),
  88. VkKeyboardButton('Кейс Средний',
  89. color='primary',
  90. payload={'command': 'noobcase'}),
  91. VkKeyboardButton('Кейс Большой',
  92. color='primary',
  93. payload={'command': 'majorcase'})
  94. )
  95. keyboard.row(
  96. VkKeyboardButton('Кейс Удача',
  97. color='primary', # Можно использовать как VkColor так и текст
  98. payload={'command': 'luckycase'}),
  99. )
  100. keyboard.add(VkKeyboardButton(
  101. label='Назад',
  102. color=VkColor.NEGATIVE,
  103. payload={'command': 'back'}
  104. ))
  105. return keyboard()
  106.  
  107.  
  108. def opencase():
  109. keyboard = VkKeyboardMarkup(stack_size=3)
  110. keyboard.add(VkKeyboardButton(
  111. label='Открыть',
  112. color=VkColor.POSITIVE,
  113. payload={'command': 'open'}
  114. ))
  115. keyboard.add(VkKeyboardButton(
  116. label='Назад',
  117. color=VkColor.NEGATIVE,
  118. payload={'command': 'back'}
  119. ))
  120. return keyboard()
  121.  
  122. def checkuser(userid):
  123. cursor.execute(f"""SELECT * FROM users WHERE id={userid}""")
  124. temp = cursor.fetchone()
  125. return temp
  126.  
  127.  
  128. @bot.message_handler(command='bomjcase')
  129. def infocase(m):
  130. cursor.execute("""UPDATE users SET casenumber='%s' WHERE id='%s'""",(1,m.from_id))
  131. conn.commit()
  132. cursor.execute("""SELECT * FROM cases WHERE id=1""")
  133. fetch = cursor.fetchone()
  134. m.answer(
  135. message=f'Вы выбрали кейс "Маленький":\n\nСтоимость открытия кейса: {fetch[2]}\n\nВы можете выиграть: {fetch[3]}',
  136. keyboard=opencase()
  137. )
  138. return
  139.  
  140.  
  141. @bot.message_handler(command='noobcase')
  142. def checkcase(m):
  143. cursor.execute("""UPDATE users SET casenumber='%s' WHERE id='%s'""", (2, m.from_id))
  144. conn.commit()
  145. cursor.execute("""SELECT * FROM cases WHERE id=2""")
  146. fetch = cursor.fetchone()
  147. m.answer(
  148. message=f'Вы выбрали кейс "Средний":\n\nСтоимость открытия кейса: {fetch[2]}\n\nВы можете выиграть: {fetch[3]}',
  149. keyboard=opencase()
  150. )
  151. return
  152.  
  153.  
  154. @bot.message_handler(command='majorcase')
  155. def checkcase(m):
  156. cursor.execute("""UPDATE users SET casenumber='%s' WHERE id='%s'""", (3, m.from_id))
  157. conn.commit()
  158. cursor.execute("""SELECT * FROM cases WHERE id=3""")
  159. fetch = cursor.fetchone()
  160. m.answer(
  161. message=f'Вы выбрали кейс "Большой":\n\nСтоимость открытия кейса: {fetch[2]}\n\nВы можете выиграть: {fetch[3]}',
  162. keyboard=opencase()
  163. )
  164. return
  165.  
  166.  
  167. @bot.message_handler(command='luckycase')
  168. def checkcase(m):
  169. cursor.execute("""UPDATE users SET casenumber='%s' WHERE id='%s'""", (4, m.from_id))
  170. conn.commit()
  171. cursor.execute("""SELECT * FROM cases WHERE id=4""")
  172. fetch = cursor.fetchone()
  173. m.answer(
  174. message=f'Вы выбрали кейс "Удача":\n\nСтоимость открытия кейса: {fetch[2]}\n\nВы можете выиграть: {fetch[3]}',
  175. keyboard=opencase()
  176. )
  177. return
  178.  
  179.  
  180. @bot.message_handler(command='cases')
  181. def checkcase(m):
  182. name = checkuser(m.from_id)[4]
  183. m.answer(
  184. message=f'Кейсы, здесь информация о них: \n~~~~~~~~~~~~~~~~~~~~~~\n🗃 Кейс "Маленький"\n 💰 Стоимость - 1000\n🤑 Возможно выиграть: 100,500,750, 1000, 2000, 3500, 5000\n~~~~~~~~~~~~~~~~~~~~~~\n🗃 Кейс "Средний" \n💰 Стоимость - 5000\n🤑 Возможно выиграть: 2000,3500,4000, 5000, 6500, 7500, 10000\n~~~~~~~~~~~~~~~~~~~~~~\n🗃 Кейс "Большой"\n 💰 Стоимость - 10000\n🤑 Возможно выиграть: 5000,7500,9000, 11500, 12500, 14500, 15000\n~~~~~~~~~~~~~~~~~~~~~~\n🗃 Кейс "Удача" \n💰 Стоимость - 100000\n🤑 Возможно выиграть: 65000,75000,90000, 115000, 125000, 145000, 150000 \n~~~~~~~~~~~~~~~~~~~~~~',
  185. keyboard=caseskeyboard()
  186. )
  187. return
  188.  
  189.  
  190. @bot.message_handler(command='open')
  191. def oppencase(m):
  192. userchecker = checkuser(m.from_id)
  193. name = userchecker[4]
  194. case = userchecker[5]
  195. cursor.execute("""SELECT * FROM cases WHERE id=%s""",(str(case)))
  196. fetch = cursor.fetchone()
  197. if userchecker[1] >= fetch[2]:
  198. posswin = str(fetch[3]).split(',')
  199. print(posswin)
  200. randomchoice = random.choice(posswin)
  201. cursor.execute("""UPDATE users SET balance='%s' WHERE id='%s'""", ((int(userchecker[1])-int(fetch[2]))+int(randomchoice), m.from_id))
  202. useless = checkuser(m.from_id)
  203. m.answer(
  204. message=f'{name}, поздравляю вы выиграли: {randomchoice},ваш баланс равен: {int(useless[1])}'
  205. )
  206. conn.commit()
  207.  
  208. else:
  209. m.answer(
  210. message=f'{name}, у вас недостаточно средств для покупки этого кейса!',
  211. keyboard = keyboardout()
  212. )
  213.  
  214.  
  215.  
  216. @bot.message_handler(command='back')
  217. def back(m):
  218. name = checkuser(m.from_id)[4]
  219. cursor.execute("""UPDATE users SET casenumber='%s' WHERE id='%s'""", (0, m.from_id))
  220. conn.commit()
  221. m.answer(
  222. message=f'{name}, вы уверены что хотели назад?',
  223. keyboard=keyboardout()
  224. )
  225. return
  226.  
  227.  
  228. @bot.message_handler(command='balance')
  229. def givebalance(m):
  230. useless = checkuser(m.from_id)
  231. name = useless[4]
  232. m.answer(
  233. message=f'{name}, вот ваш баланс: {int(useless[1])} Coins',
  234. keyboard=keyboardout()
  235. )
  236. return
  237.  
  238.  
  239. @bot.message_handler(command='upbal')
  240. def upbalance(m):
  241. name = checkuser(m.from_id)[4]
  242. m.answer(
  243. message=f'Ссылка для пополнения баланса: {merchant.get_payment_url(amount=1000, free_amount=True)}',
  244. keyboard=keyboardout()
  245. )
  246. return
  247.  
  248.  
  249. @bot.message_handler(command='downbal')
  250. def downbalace(m):
  251. useless = checkuser(m.from_id)
  252. name = checkuser(m.from_id)[4]
  253.  
  254. if int(useless[1]) <= 0:
  255. m.answer(
  256. message='Ваш баланс равен 0 по этому вы не можете вывести.',
  257. keyboard=keyboardout()
  258. )
  259. else:
  260. merchant.send_coins(m.from_id, int(checkuser(m.from_id)[1])*1000)
  261. cursor.execute(f"""UPDATE users SET balance=0 WHERE id='%s'""", (m.from_id,))
  262. conn.commit()
  263. m.answer(
  264. message='Баланс был успешно выведен!',
  265. keyboard=keyboardout()
  266. )
  267.  
  268. @bot.message_handler()
  269. def checksfirstuser(m):
  270. temp = checkuser(m.from_id)
  271. res = api.users.get(user_ids=m.from_id)[0]
  272. name = res['first_name']
  273. inbase = name
  274. if temp != None:
  275. m.answer(
  276. message=f'{inbase}, бот не понял вашей команды',
  277. keyboard=keyboardout()
  278. )
  279. return
  280. if temp == None:
  281. m.answer(
  282. message=f'Добро пожаловать в нашего бота, {inbase}!',
  283. keyboard=keyboardout()
  284. )
  285. cursor.execute(f"""INSERT INTO users(id,name) VALUES ('{m.from_id}','{name}')""")
  286. conn.commit()
  287. return
  288.  
  289.  
  290. handler.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement