New changes

This commit is contained in:
Florian Kellermann 2022-05-09 18:36:08 +02:00
commit 3d4db8a817

View File

@ -18,8 +18,8 @@ import time
import sqlalchemy import sqlalchemy
import telebot import telebot
import pandas as pd
from dotenv import load_dotenv from dotenv import load_dotenv
from sqlalchemy.exc import IntegrityError
from telebot import types from telebot import types
from random import randrange from random import randrange
from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.schedulers.background import BackgroundScheduler
@ -151,11 +151,16 @@ def send_user_info(message):
user_id = message.from_user.id user_id = message.from_user.id
user = session.query(User).filter_by(telegram_id=user_id).first() user = session.query(User).filter_by(telegram_id=user_id).first()
scores = session.query(Score).filter_by(telegram_id=user_id).all() 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: if user is not None:
user_name = user.username # tbd: get user name by id from db 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_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" 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"
@ -168,6 +173,39 @@ def send_user_info(message):
bot.reply_to(message, user_info, parse_mode='MARKDOWN') 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']) @bot.message_handler(commands=['setAdmin', 'SetAdmin', 'Setadmin', 'setadmin'])
def set_admin(message): def set_admin(message):
"""set admin status of user """set admin status of user
@ -250,7 +288,7 @@ def send_scoreboard(message):
None: None None: None
""" """
bot.reply_to(message, "Scoreboard not implemented yet") dict
@bot.message_handler(commands=['challenge', 'Challenge']) @bot.message_handler(commands=['challenge', 'Challenge'])