Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.36 KB | None | 0 0
  1. import json
  2. from flask import Flask
  3. from flask import request
  4. import vk
  5. import MySQLdb
  6. import sys
  7. from random import randint
  8. import time
  9.  
  10. app = Flask(__name__)
  11. #print('connected', file=sys.stderr)# PERFECT DEBUG
  12. @app.route('/', methods=['GET'])
  13. def hello_world():
  14.     return 'Yes, i am working'
  15.  
  16. confirmation_token = '835c72c0'
  17. token = '9d604ab23f50624ab17fd1da1cd3122faacfa0a0cbf1fc6daf0b05c17b540f3bb7dd328e47ac18ab2152b'
  18. start_message = 'Привет, я бот, с которым ты можешь поиграть в угадай мелодию. Чтобы начать играть, просто напиши "начать игру". Если вам надоест, просто напишите "хватит".'
  19. rep_message = 'Напоминаю, чтобы начать игру, напишите "начать игру".'
  20.  
  21. def gen_songs(cursor, player_id):
  22.     cursor.execute("SELECT id, vk_id, name FROM music ORDER BY RAND() LIMIT 4")
  23.     i = 1
  24.     names = []
  25.     ids = []
  26.     for music_id, vk_id, name in cursor.fetchall():
  27.         names.append(name)
  28.         ids.append(vk_id)
  29.         #cursor.execute("INSERT INTO player_music (player_id, music_id, music_num) VALUES (%d, %d, %d)", (player_id, music_id, i,))
  30.         i += 1
  31.     answer = randint(1, 4)
  32.     print("This is player_id: "+repr(player_id), file=sys.stderr)
  33.     cursor.execute("INSERT INTO answer (player_id, music_num) VALUES (%s, %s)", (player_id, answer,))
  34.     return names, ids[answer - 1]
  35.  
  36. def clear_songs(cursor, player_id):
  37.     cursor.execute("DELETE FROM player_music WHERE player_id = %s", (player_id,))
  38.     cursor.execute("DELETE FROM answer WHERE player_id = %s", (player_id,))
  39.  
  40. @app.route('/', methods=['POST'])
  41. def processing():
  42. #    try:
  43.         data = json.loads(request.data.decode())
  44.         now_time = int(time.time())
  45.         mes_time = data['object']['date']
  46.         if now_time - mes_time > 20:
  47.             return 'ok'
  48.         if 'type' not in data.keys():
  49.             return 'not vk'
  50.         if data['type'] == 'confirmation':
  51.             return confirmation_token
  52.         elif data['type'] == 'message_new':
  53.             session = vk.Session()
  54.             api = vk.API(session, v=5.0)
  55.             user_id = str(data['object']['user_id'])
  56.             message = data['object']['body']
  57.             db = MySQLdb.connect(host="kawaishashinbot.mysql.pythonanywhere-services.com", user="kawaishashinbot", passwd="ilovemusic",
  58.                                                                                                     db="kawaishashinbot$music", charset='utf8')
  59.             cursor = db.cursor()
  60.             cursor.execute("SELECT id, status FROM player WHERE vk_id = %s", (user_id,))
  61.             r = cursor.fetchone()
  62.             if r is None:
  63.                 api.messages.send(access_token=token, user_id=user_id, message=start_message)#, attachment="audio-157942650_456239017") #"video-102087446_456246234")
  64.                 cursor.execute("INSERT INTO player (vk_id, status) VALUES (%s, 'not_guessing')", (user_id,))
  65.             elif r[1] == 'guessing':
  66.                 if message.lower() == "хватит":
  67.                     clear_songs(cursor, r[0])
  68.                     cursor.execute("UPDATE player SET status = 'not_guessing' where vk_id = %s", (user_id,))
  69.                     api.messages.send(access_token=token, user_id=user_id, message="Вы успешно вышли из игры.")
  70.                 elif message not in {'1', '2', '3', '4'}:
  71.                     api.messages.send(access_token=token, user_id=user_id, message="Введите цифру для ответа. Если вы хотите выйти, введите \"хватит\".")
  72.                 else:
  73.                     cursor.execute("SELECT music_num FROM answer WHERE player_id = %s", (r[0],))
  74.                     ans = cursor.fetchone()[0]
  75.                     if int(message) == ans:
  76.                         text = "Вау, да вы угадали :3"
  77.                     else:
  78.                         text = "Неа, вы не угадали :с"#, ответ был " + str(ans)
  79.                     clear_songs(cursor, r[0])
  80.                     names, vk_id = gen_songs(cursor, r[0])
  81.                     api.messages.send(access_token=token, user_id=user_id, message=text + "\nДля ответа введите номер:\n"+"\n".join([str(i + 1) + "." + names[i] for i in range(4)]),
  82.                         attachment="audio" + vk_id)
  83.             else:
  84.                 if message.lower() == 'начать игру':
  85.                     cursor.execute("UPDATE player SET status = 'guessing' where vk_id = %s", (user_id,))
  86.                     names, vk_id = gen_songs(cursor, r[0])
  87.                     api.messages.send(access_token=token, user_id=user_id, message="Для ответа введите номер:\n"+"\n".join([str(i + 1) + "." + names[i] for i in range(4)]),
  88.                         attachment="audio" + vk_id)
  89.                 else:
  90.                     api.messages.send(access_token=token, user_id=user_id, message=rep_message)#, attachment="audio-157942650_456239017") #"video-102087446_456246234")
  91.             db.commit()
  92.             db.close()
  93.             #api.messages.send(access_token=token, user_id=str(user_id), message='"' + message + '" - так говорят только сливальщики АСМ')
  94.             return 'ok'
  95. #    except Exception as e:
  96. #        return str(e)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement