mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-20 04:16:04 +00:00
v2.4.10: stats auto-install + i18n for show_proxy_info, traffic stats (SSH+bot)
This commit is contained in:
@@ -100,7 +100,7 @@ logger = logging.getLogger(__name__)
|
||||
# CONFIGURATION
|
||||
# ============================================================================
|
||||
|
||||
GOTELEGRAM_VERSION = "2.4.9"
|
||||
GOTELEGRAM_VERSION = "2.4.10"
|
||||
GOTELEGRAM_CONFIG = "/opt/gotelegram/config.json"
|
||||
TELEMT_CONFIG = "/etc/telemt/config.toml"
|
||||
TELEMT_SERVICE = "telemt"
|
||||
@@ -687,7 +687,7 @@ async def get_status_text(user_id: Optional[int] = None) -> str:
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
async def get_traffic_stats() -> str:
|
||||
async def get_traffic_stats(user_id: Optional[int] = None) -> str:
|
||||
"""Get formatted traffic statistics."""
|
||||
# Read current snapshot
|
||||
current_file = "/run/gotelegram/stats_current.json"
|
||||
@@ -697,7 +697,7 @@ async def get_traffic_stats() -> str:
|
||||
with open(current_file, "r") as f:
|
||||
current = json.load(f)
|
||||
except Exception:
|
||||
return "📊 <b>Статистика</b>\n\n<i>Данные недоступны. Убедитесь что модуль статистики включён.</i>"
|
||||
return f"📊 <b>{_t(user_id, 'stats_title', 'Statistics')}</b>\n\n<i>{_t(user_id, 'stats_unavailable', 'Data unavailable. Make sure stats module is enabled.')}</i>"
|
||||
|
||||
# Read history
|
||||
history = []
|
||||
@@ -754,21 +754,27 @@ async def get_traffic_stats() -> str:
|
||||
return format_bytes(diff), format_rate(rate)
|
||||
|
||||
periods = [
|
||||
("1 мин", 60),
|
||||
("5 мин", 300),
|
||||
("60 мин", 3600),
|
||||
("1 день", 86400),
|
||||
("7 дней", 604800),
|
||||
("30 дней", 2592000),
|
||||
("365 дней", 31536000),
|
||||
(_t(user_id, "stats_1min", "1 min"), 60),
|
||||
(_t(user_id, "stats_5min", "5 min"), 300),
|
||||
(_t(user_id, "stats_60min", "60 min"), 3600),
|
||||
(_t(user_id, "stats_1day", "1 day"), 86400),
|
||||
(_t(user_id, "stats_7days", "7 days"), 604800),
|
||||
(_t(user_id, "stats_30days", "30 days"), 2592000),
|
||||
(_t(user_id, "stats_365days", "365 days"), 31536000),
|
||||
]
|
||||
|
||||
lines = ["📊 <b>Статистика трафика</b>\n"]
|
||||
hdr_period = _t(user_id, "stats_hdr_period", "Period")
|
||||
hdr_traffic = _t(user_id, "stats_hdr_traffic", "Traffic")
|
||||
hdr_rate = _t(user_id, "stats_hdr_rate", "Rate")
|
||||
|
||||
for label, key in [("Proxy (telemt)", "proxy"), ("Сайт (nginx)", "site")]:
|
||||
lines = [f"📊 <b>{_t(user_id, 'stats_traffic_title', 'Traffic statistics')}</b>\n"]
|
||||
|
||||
lbl_proxy = _t(user_id, "stats_proxy_label", "Proxy (telemt)")
|
||||
lbl_site = _t(user_id, "stats_site_label", "Site (nginx)")
|
||||
for label, key in [(lbl_proxy, "proxy"), (lbl_site, "site")]:
|
||||
lines.append(f"\n<b>{label}:</b>")
|
||||
lines.append("<pre>")
|
||||
lines.append(f"{'Период':<10} │ {'Трафик':>10} │ {'Скорость':>10}")
|
||||
lines.append(f"{hdr_period:<10} │ {hdr_traffic:>10} │ {hdr_rate:>10}")
|
||||
lines.append("─" * 36)
|
||||
for name, secs in periods:
|
||||
total, rate = calc_for_period(secs, key)
|
||||
@@ -783,11 +789,12 @@ async def cb_menu_stats(update: Update, context: ContextTypes.DEFAULT_TYPE) -> N
|
||||
query = update.callback_query
|
||||
await query.answer()
|
||||
|
||||
stats_text = await get_traffic_stats()
|
||||
uid = _uid(update)
|
||||
stats_text = await get_traffic_stats(uid)
|
||||
|
||||
keyboard = [
|
||||
[InlineKeyboardButton("🔄 Обновить", callback_data="menu_stats")],
|
||||
[InlineKeyboardButton(_t(_uid(update), "btn_back"), callback_data="menu_main")],
|
||||
[InlineKeyboardButton(_t(uid, "btn_refresh", "🔄 Refresh"), callback_data="menu_stats")],
|
||||
[InlineKeyboardButton(_t(uid, "btn_back"), callback_data="menu_main")],
|
||||
]
|
||||
|
||||
await safe_edit_message(
|
||||
|
||||
Reference in New Issue
Block a user