Changed /me function and fixed bug in daily (could have more than one try when time ran out)
This commit is contained in:
parent
18494e235f
commit
d7c6414e26
@ -197,25 +197,42 @@ def send_user_info(message):
|
|||||||
"""
|
"""
|
||||||
user_id = message.from_user.id
|
user_id = message.from_user.id
|
||||||
user = session.query(User).filter(User.telegram_id==user_id).first() # get user from database, only one user per telegram id exists
|
user = session.query(User).filter(User.telegram_id==user_id).first() # get user from database, only one user per telegram id exists
|
||||||
scores = session.query(Score).filter(User.telegram_id==user_id).all() # get all scores of user
|
user_scores = session.query(Score).filter(Score.telegram_id==user_id).all() # get today's score object for user
|
||||||
today_score = session.query(Score).filter(Score.date==dt.datetime.now(), Score.telegram_id==user_id).first() # get today's score object for user
|
|
||||||
today_guess = "not guessed today"
|
today_score = None
|
||||||
|
today_guess = None
|
||||||
|
|
||||||
|
for score in user_scores:
|
||||||
|
if score.date.date() == dt.datetime.now().date(): # check if today's score is already in database
|
||||||
|
today_score = score.score
|
||||||
|
today_guess = score.guess
|
||||||
|
|
||||||
|
if today_guess is None:
|
||||||
|
today_guess = "No guess today"
|
||||||
|
else:
|
||||||
|
today_guess = str(today_guess) + "€"
|
||||||
|
|
||||||
|
if today_score is None:
|
||||||
|
today_score = "No score today"
|
||||||
|
|
||||||
|
if today_score is not None and today_guess is not None:
|
||||||
|
all_time_score = sum(score.score for score in user_scores)
|
||||||
|
else:
|
||||||
|
all_time_score = "No score yet"
|
||||||
|
|
||||||
if today_score is not None:
|
|
||||||
today_guess = str(today_score.guess) # get guess of today's score object of user
|
|
||||||
|
|
||||||
if user is not None: # if user is registered
|
if user is not None: # if user is registered
|
||||||
user_name = user.username
|
user_name = user.username
|
||||||
user_score = sum(score.score for score in scores)
|
|
||||||
user_guess = today_guess
|
|
||||||
user_info = (f"Your user info:\n"
|
user_info = (f"Your user info:\n"
|
||||||
f"User ID: {user_id}\n"
|
f"User ID: {user_id}\n"
|
||||||
f"Username: {user_name}\n"
|
f"Username: {user_name}\n"
|
||||||
f"Today's guess: {user_guess}\n"
|
f"Today's guess: {today_guess}\n"
|
||||||
f"Your Score: {user_score}\n")
|
f"Today's Score: {today_score}\n"
|
||||||
|
f"All time Score: {all_time_score}")
|
||||||
|
|
||||||
else: # if user is not registered
|
else: # if user is not registered
|
||||||
# User not found
|
# User not found
|
||||||
user_info = "User does not exist."
|
user_info = "User does not exist.\nDo /start to register"
|
||||||
|
|
||||||
bot.reply_to(message, user_info)
|
bot.reply_to(message, user_info)
|
||||||
|
|
||||||
@ -492,7 +509,17 @@ def change_name_setter(message):
|
|||||||
|
|
||||||
|
|
||||||
def time_in_range(start, end, current):
|
def time_in_range(start, end, current):
|
||||||
"""Returns whether current is in the range [start, end]""" # docstring is missing!!!!!
|
""" Check if current time is in range of start and end
|
||||||
|
|
||||||
|
Args:
|
||||||
|
start (datetime): start time
|
||||||
|
end (datetime): end time
|
||||||
|
current (datetime): current time
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: True if current time is in range of start and end, False otherwise
|
||||||
|
|
||||||
|
"""
|
||||||
return start <= current <= end
|
return start <= current <= end
|
||||||
|
|
||||||
def find_todays_product_from_db():
|
def find_todays_product_from_db():
|
||||||
@ -596,6 +623,7 @@ def get_user_guess(message, start_time):
|
|||||||
"""
|
"""
|
||||||
end_time = time.time()
|
end_time = time.time()
|
||||||
user_id = int(message.from_user.id)
|
user_id = int(message.from_user.id)
|
||||||
|
over_time = False #If user guesses to slow (> 20 seconds)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
user_guess = float(message.text.replace( ',', '.'))
|
user_guess = float(message.text.replace( ',', '.'))
|
||||||
@ -604,25 +632,23 @@ def get_user_guess(message, start_time):
|
|||||||
bot.register_next_step_handler(message, get_user_guess, start_time)
|
bot.register_next_step_handler(message, get_user_guess, start_time)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
if get_time_difference(start_time, end_time) > 20:
|
if get_time_difference(start_time, end_time) > 20:
|
||||||
bot.send_message(chat_id=user_id, text="You took too long to guess.\n"
|
bot.send_message(chat_id=user_id, text="You took too long to guess.\n"
|
||||||
"No more tries today.")
|
"No more tries today.")
|
||||||
return
|
over_time = True # user guesses to slow
|
||||||
|
|
||||||
|
|
||||||
if get_time_difference(start_time, end_time) > 20:
|
|
||||||
bot.send_message(chat_id=user_id, text="You took too long to guess.\n"
|
|
||||||
"No more tries today.")
|
|
||||||
return
|
|
||||||
|
|
||||||
|
product_for_today=find_todays_product_from_db()
|
||||||
|
|
||||||
|
if not over_time: # when answer was in time
|
||||||
message_text=f"You guessed {round(user_guess,2)}€"
|
message_text=f"You guessed {round(user_guess,2)}€"
|
||||||
bot.send_message(chat_id=user_id, text = message_text)
|
bot.send_message(chat_id=user_id, text = message_text)
|
||||||
|
|
||||||
# calculate score for guess
|
# calculate score for guess
|
||||||
product_for_today=find_todays_product_from_db()
|
if not over_time:
|
||||||
user_score = scoring.eval_score(product_for_today.price, user_guess)
|
user_score = scoring.eval_score(product_for_today.price, user_guess)
|
||||||
|
else:
|
||||||
|
user_score = 0
|
||||||
|
user_guess = 0
|
||||||
|
|
||||||
score = Score (
|
score = Score (
|
||||||
telegram_id = user_id,
|
telegram_id = user_id,
|
||||||
@ -635,9 +661,6 @@ def get_user_guess(message, start_time):
|
|||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=['addproduct', 'Addproduct'])
|
@bot.message_handler(commands=['addproduct', 'Addproduct'])
|
||||||
def add_product(message):
|
def add_product(message):
|
||||||
"""Add product to database
|
"""Add product to database
|
||||||
|
Loading…
Reference in New Issue
Block a user