Преглед на файлове

Add check if account is already connected

JoostSijm преди 5 години
родител
ревизия
615e53e091
променени са 2 файла, в които са добавени 24 реда и са изтрити 3 реда
  1. 9 1
      app/conversations/add.py
  2. 15 2
      app/database.py

+ 9 - 1
app/conversations/add.py

@@ -38,6 +38,10 @@ def conv_player_choose(update, context):
     if len(players) == 1:
         player = players[0]
         player_id = player['id']
+        if database.is_connected(update.message.from_user.id, player_id):
+            update.message.reply_text('Account already connected.')
+            context.user_data.clear()
+            return ConversationHandler.END
         context.user_data['player_id'] = player_id
         ask_confirmation(update, player_id)
         return CONFIRM
@@ -73,6 +77,10 @@ def conv_player_id_confirm(update, context):
             return CHOOSE
         player = context.user_data['player_list'][player_index]
         player_id = player['id']
+    if database.is_connected(update.message.from_user.id, player_id):
+        update.message.reply_text('Account already connected.')
+        context.user_data.clear()
+        return ConversationHandler.END
     context.user_data['player_id'] = player_id
     update.message.reply_text(
         'Retreiving account from Rival Regions, this might take a couple seconds.'
@@ -171,7 +179,7 @@ def conv_finish(update, context):
     return ConversationHandler.END
 
 def conv_error_finish(update, context):
-    """Ask max resource"""
+    """Wrong verification code"""
     incorrect_input = update.message.text
     update.message.reply_text(
         '"{}" not recognized. Send me the verification code.\n/cancel to cancel'.format(

+ 15 - 2
app/database.py

@@ -52,7 +52,8 @@ def verify_rr_player(telegram_id, player_id):
             return
 
     active_player_telegrams = session.query(PlayerTelegram) \
-        .filter(PlayerTelegram.until_date_time != None) \
+        .filter(PlayerTelegram.until_date_time == None) \
+        .filter(PlayerTelegram.player_id == player_id) \
         .all()
     for active_player_telegram in active_player_telegrams:
         LOGGER.info(
@@ -75,6 +76,19 @@ def verify_rr_player(telegram_id, player_id):
     session.commit()
     session.close()
 
+
+def is_connected(telegram_id, player_id):
+    """Check if account is already"""
+    session = SESSION()
+    player_telegram = session.query(PlayerTelegram) \
+        .filter(PlayerTelegram.until_date_time == None) \
+        .filter(PlayerTelegram.telegram_id == telegram_id) \
+        .filter(PlayerTelegram.player_id == player_id) \
+        .first()
+    session.close()
+    return bool(player_telegram)
+
+
 def _get_telegram_player(session, telegram_id):
     """Return telegram_player"""
     return session.query(TelegramAccount).get(telegram_id)
@@ -86,4 +100,3 @@ def _get_rr_players(session, telegram_player_id):
         .filter(PlayerTelegram.telegram_id == telegram_player_id) \
         .filter(PlayerTelegram.until_date_time == None) \
         .all()
-