https://dev.kronoz.win/r/marzneshin.git
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")