|
@@ -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:
|