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