Selaa lähdekoodia

Cleaning up some logic issues, fixing a few typos

Kirk Trombley 6 vuotta sitten
vanhempi
commit
abcb34b10a
1 muutettua tiedostoa jossa 20 lisäystä ja 13 poistoa
  1. 20 13
      src/plugins/hangguy.py

+ 20 - 13
src/plugins/hangguy.py

@@ -1,4 +1,4 @@
-import datettime
+import datetime
 import re
 
 from sqlalchemy import Column, Integer, String, DateTime
@@ -39,7 +39,7 @@ class DeadGuy(ModelBase):
             group_id=guy.group_id,
             state=guy.state,
             games=guy.games,
-            timestamp=datetime.datetime.now():
+            timestamp=datetime.datetime.now()
         )
 
 
@@ -100,7 +100,7 @@ def guess_letter(game_state, letter):
     if letter in game_state.bad_guesses or letter in game_state.state:
         return -1
 
-    find = [i for i, x in game_state.target if x == letter]
+    find = [i for i, x in enumerate(game_state.target) if x == letter]
     if len(find) == 0:
         game_state.bad_guesses = game_state.bad_guesses + letter
         return 0
@@ -151,13 +151,17 @@ def handle_in_game(db, msg, game_state, guy_state):
     guess = msg.raw_args.upper()
     prefix = ""
     if len(guess) == 1:
-        res = guess_letter(game_state, guess)
-        if res == -1:
-            prefix += f"You've already guessed '{guess}'!"
-        elif res == 0:
-            prefix += "Bad guess!"
+        if guess.isalpha():
+            res = guess_letter(game_state, guess)
+            if res == -1:
+                prefix += f"You've already guessed '{guess}'!"
+            elif res == 0:
+                prefix += "Bad guess!"
+                guy_state.state = guy_state.state + 1
+            else:
+                prefix += f"Great! '{guess}' appears {res} time{'' if res == 1 else 's'}!"
         else:
-            prefix += f"Great! '{guess}' appears {res} time{'' if res == 1 else 's'}!"
+            prefix += "You should try sticking to letters!"
     else:
         prefix = "Full phrase guessing not yet supported!"
         # TODO guess and handle the result
@@ -168,7 +172,7 @@ def handle_in_game(db, msg, game_state, guy_state):
         txt += "\nThe game is over, and the guy lives on!"
         end_game(game_state)
         guy_state.games = guy_state.games + 1
-        txt += "\nThis guy has now {survival_msg(guy_state)}"
+        txt += f"\nThis guy has now {survival_msg(guy_state)}"
 
     if guy_is_dead(guy_state):
         txt += "\noh god oh fuck, the guy is dead!"
@@ -191,6 +195,9 @@ def hangguy(db, msg):
     game_state = get_game(db, msg.group_id)
     guy_state = get_guy(db, msg.group_id)
 
+    if msg.raw_args is None:
+        return RollbotResponse(msg, failure=RollbotFailure.MISSING_SUBCOMMAND)
+
     if game_is_active(game_state):
         return handle_in_game(db, msg, game_state, guy_state)
 
@@ -205,13 +212,13 @@ def hangguy(db, msg):
 
     subc = msg.raw_args[1:].strip().lower()
 
-    if msg.raw_args == "view":
+    if subc == "view":
         txt = f"The current guy has {survival_msg(guy_state)}\n"
         txt += render_guy(guy_state)
         return RollbotResponse(msg, txt=txt)
-    elif msg.raw_args == "retire":
+    elif subc == "retire":
         return RollbotResponse(msg, txt=subc_retire(db, guy_state))
-    elif msg.raw_args == "start"
+    elif subc == "start":
         init_game(game_state)
         return RollbotResponse(msg, txt=render_game(game_state, guy_state))
     else: