gitscope
← marzneshin / v0.3.0-alpha1 / app/telegram/handlers/user.py
https://dev.kronoz.win/r/marzneshin.git
app/telegram/handlers/user.py · Python
Blame Raw
 1from datetime import datetime
 2from app.db import GetDB, crud
 3from app.models.user import UserResponse
 4from app.telegram import bot
 5
 6# from pytz import UTC
 7from telebot.custom_filters import ChatFilter
 8from telebot.util import extract_arguments
 9
10from app.utils.system import readable_size
11
12bot.add_custom_filter(ChatFilter())
13
14
15@bot.message_handler(commands=["usage"])
16def usage_command(message):
17    username = extract_arguments(message.text)
18    if not username:
19        return bot.reply_to(
20            message, "Usage: `/usage <username>`", parse_mode="MarkdownV2"
21        )
22
23    with GetDB() as db:
24        dbuser = crud.get_user(db, username)
25
26        if not dbuser:
27            return bot.reply_to(message, "No user found with this username")
28        user = UserResponse.model_validate(dbuser)
29
30        statuses = {"active": "✅", "expired": "🕰", "limited": "📵", "disabled": "❌"}
31
32        text = f"""\
33┌─{statuses[user.status]} <b>Status:</b> <code>{user.status.title()}</code>
34│          └─<b>Username:</b> <code>{user.username}</code>
35│
36├─🔋 <b>Data limit:</b> <code>{readable_size(user.data_limit) if user.data_limit else 'Unlimited'}</code>
37│          └─<b>Data Used:</b> <code>{readable_size(user.used_traffic) if user.used_traffic else "-"}</code>
38│
39└─📅 <b>Expiry Date:</b> <code>{datetime.fromtimestamp(user.expire).date() if user.expire else 'Never'}</code>
40            └─<b>Days left:</b> <code>{(datetime.fromtimestamp(user.expire or 0) - datetime.now()).days if user.expire else '-'}</code>"""
41
42    return bot.reply_to(message, text, parse_mode="HTML")