version 1.4.3: обрезание текста бота под 4096 символов, фикс кнопок
- bot.py: текст show_users обрезается до 4000 символов, кнопки до 96, убран недельный трафик - README: обновлён
This commit is contained in:
@@ -92,7 +92,7 @@ curl -Ls https://raw.githubusercontent.com/grendervilll/mitactl/main/bootstrap.s
|
|||||||
- [x] Защита сессий: динамический Secure cookie, in-memory rate limiter
|
- [x] Защита сессий: динамический Secure cookie, in-memory rate limiter
|
||||||
- [x] Bootstrap-установщик (одна команда)
|
- [x] Bootstrap-установщик (одна команда)
|
||||||
- [x] Мониторинг сервера: CPU, RAM, диск на дашборде (автообновление каждые 2 сек)
|
- [x] Мониторинг сервера: CPU, RAM, диск на дашборде (автообновление каждые 2 сек)
|
||||||
- [x] Telegram-бот: inline-кнопки, меню пользователя с конфигом/Karing, create/delete/WARP/дашборд/безопасность
|
- [x] Telegram-бот: inline-меню, user\_ подменю, конфиг/Karing, 4096-char truncate, 100-btn limit
|
||||||
- [x] Установка: веб-панель, CLI, полный установщик; авто-ID через API; venv + зеркала PyPI + fallback на apt
|
- [x] Установка: веб-панель, CLI, полный установщик; авто-ID через API; venv + зеркала PyPI + fallback на apt
|
||||||
|
|
||||||
### ⬜ Запланировано
|
### ⬜ Запланировано
|
||||||
|
|||||||
@@ -198,16 +198,21 @@ async def show_users(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|||||||
w = "🟢" if name in warp_users else "⚪"
|
w = "🟢" if name in warp_users else "⚪"
|
||||||
o = "🟢" if s.get("online") else "🔴"
|
o = "🟢" if s.get("online") else "🔴"
|
||||||
day = f"{s.get('day_mb', 0):.1f} МБ" if s.get("day_mb") else "—"
|
day = f"{s.get('day_mb', 0):.1f} МБ" if s.get("day_mb") else "—"
|
||||||
wk = f"{s.get('week_mb', 0):.1f} МБ" if s.get("week_mb") else "—"
|
|
||||||
mon = f"{s.get('month_mb', 0):.1f} МБ" if s.get("month_mb") else "—"
|
mon = f"{s.get('month_mb', 0):.1f} МБ" if s.get("month_mb") else "—"
|
||||||
ename = escape_md(name)
|
ename = escape_md(name)
|
||||||
lines.append(f"{o} {ename} {w} день: {day} нед: {wk} мес: {mon}")
|
lines.append(f"{o} {ename} {w} д:{day} м:{mon}")
|
||||||
# Каждый пользователь — одна кнопка, открывает меню с конфигом и Karing
|
|
||||||
user_buttons.append([InlineKeyboardButton(
|
user_buttons.append([InlineKeyboardButton(
|
||||||
f"{'🟢 ' if s.get('online') else ''}{name}",
|
f"{'🟢 ' if s.get('online') else ''}{name}",
|
||||||
callback_data=f"user_{name}"
|
callback_data=f"user_{name}"
|
||||||
)])
|
)])
|
||||||
|
|
||||||
|
# Ограничение Telegram: 4096 символов на сообщение
|
||||||
|
text = "\n".join(lines)
|
||||||
|
if len(text) > 4000:
|
||||||
|
text = text[:3997] + "…"
|
||||||
|
if len(user_buttons) > 96:
|
||||||
|
user_buttons = user_buttons[:96]
|
||||||
|
|
||||||
user_buttons.extend([
|
user_buttons.extend([
|
||||||
[InlineKeyboardButton("➕ Создать", callback_data="create"),
|
[InlineKeyboardButton("➕ Создать", callback_data="create"),
|
||||||
InlineKeyboardButton("🗑 Удалить", callback_data="delete_menu")],
|
InlineKeyboardButton("🗑 Удалить", callback_data="delete_menu")],
|
||||||
@@ -223,7 +228,7 @@ async def show_users(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|||||||
])
|
])
|
||||||
|
|
||||||
await query.edit_message_text(
|
await query.edit_message_text(
|
||||||
"\n".join(lines),
|
text,
|
||||||
reply_markup=InlineKeyboardMarkup(user_buttons),
|
reply_markup=InlineKeyboardMarkup(user_buttons),
|
||||||
parse_mode="MarkdownV2"
|
parse_mode="MarkdownV2"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user