diff --git a/source/bot.py b/source/bot.py index 57053a2..7882617 100644 --- a/source/bot.py +++ b/source/bot.py @@ -18,8 +18,8 @@ import time import sqlalchemy import telebot +import pandas as pd from dotenv import load_dotenv -from sqlalchemy.exc import IntegrityError from telebot import types from random import randrange from apscheduler.schedulers.background import BackgroundScheduler @@ -151,11 +151,16 @@ def send_user_info(message): user_id = message.from_user.id user = session.query(User).filter_by(telegram_id=user_id).first() scores = session.query(Score).filter_by(telegram_id=user_id).all() + today_score = session.query(Score).filter_by(date=dt.datetime.now(), telegram_id=user_id).first() # get today's score object for user + today_guess = "not guessed today" + + if today_score is not None: + today_guess = str(today_score.guess) if user is not None: user_name = user.username # tbd: get user name by id from db user_score = sum(score for score in scores) # tbd: get user score by adding all scores related to userid - user_guess = session.query(Score).filter_by(date=dt.datetime.now(), telegram_id=user_id).first().guess or "not guessed today" # tbd: display if user has guessed today and how much + user_guess = today_guess # tbd: display if user has guessed today and how much user_info = (f"Your user info:\n" f"User ID: {user_id}\n" f"Username: {user_name}\n" @@ -168,6 +173,39 @@ def send_user_info(message): bot.reply_to(message, user_info, parse_mode='MARKDOWN') +@bot.message_handler(commands=['users', 'Users']) +def send_users(message): + """send user info to user + + Args: (Message): Message from telegram user, here /users + + Returns: + None: None + + Raises: + None: None + + """ + user_id = message.from_user.id + + # Check if user is admin + if not session.query(User).filter_by(telegram_id=user_id).first().admin: + bot.reply_to(message, "Error: Admin rights are required to see all users.") + return + + users = session.query(User).all() + + if len(users) == 0: + bot.reply_to(message, "No users registered.") + + for user in users: + user_info = (f"Telegram ID: {user.telegram_id}\n" + f"Username: {user.username}\n" + f"Admin: {user.admin}\n") + bot.reply_to(message, user_info, parse_mode='MARKDOWN') + + + @bot.message_handler(commands=['setAdmin', 'SetAdmin', 'Setadmin', 'setadmin']) def set_admin(message): """set admin status of user @@ -250,7 +288,7 @@ def send_scoreboard(message): None: None """ - bot.reply_to(message, "Scoreboard not implemented yet") + dict @bot.message_handler(commands=['challenge', 'Challenge'])