admin v0.2.6 [base]


Админ-ядро TG (AdminMenu): главное меню, права, скрипты, журнал, бэкапы.

README

# admin

Админ-ядро Telegram: главное меню, права, скрипты, журнал. Две стороны: меню в Telegram и карточки в кабинете.

Тип: Модуль. Категория: `base`. Зависимости: pip-пакеты `pexpect` (интерактивный запуск скриптов обслуживания) и `python-telegram-bot` (меню и кнопки в Telegram; пин версии — как у транспорта).

## Описание

В Telegram модуль показывает главное меню `/start` с кнопками: администрирование, управление ботом, скрипты, уведомления, свой ID. Каждая кнопка видна только тем, у кого есть нужное право. Раскладка кнопок (порядок, ширина, скрытие) правится в кабинете, код трогать не нужно.

Управление хостом — перезапуск службы бота, перезагрузка и выключение машины. Каждое действие закрыто своим правом, пароль sudo хранится только в `.env` и нигде не светится.

Админы назначаются и снимаются прямо из меню или кабинета: запись уходит в `.env`, сами права хранятся централизованно. Отдельно есть журнал сообщений — кто, когда и что писал боту, включая группы. В кабинете по журналу работают поиск и фильтры.

Скрипты обслуживания (список, запуск, просмотр и правка текста) тоже живут в кабинете: скрипты кладутся в каталог `data/admin_scripts` и исполняются оттуда.

## Возможности

- `admin.menu {}` → движок AdminMenu (тот же объект, что обслуживает кнопки TG)
- `admin.toggle_right {key: 'telegram|vk|web:<id>', right}` → переключить право, вернуть новое значение
- `admin.journal {limit=200}` → хвост журнала сообщений (кто/что/когда, включая группы)

## Права

- `restart_bot` — Перезапуск службы бота (POST /api/admin/system action=restart_bot)
- `restart_machine` — Перезагрузка хоста (POST /api/admin/system action=restart_machine)
- `shutdown_host` — Выключение хоста (POST /api/admin/system action=shutdown)
- `manage_admins` — Назначение/снятие TG-админов (POST /api/admin/admins)
- `receive_notifications_new_user` — Уведомления о новых пользователях (модуль admin)
- `receive_notifications_new_user_edit` — Право менять себе уведомления о новых пользователях
- `run_scripts` — Запуск скриптов обслуживания (GET/POST /api/admin/scripts)
- `view_user_messages` — Журнал сообщений пользователей (GET /api/admin/messages)
- `menu_edit` — Группы Telegram (TG-команды group*, /api/admin/group*)

## Telegram

- `/start` — главное меню (кнопки по правам)
- `/id` — свой TG id (нужен для выдачи прав)

## Web

- `POST /api/admin/admins` — назначение/снятие админов
- `POST /api/admin/system` — restart_bot / restart_machine / shutdown
- `GET /api/admin/scripts`, `POST /api/admin/scripts` — список и запуск скриптов из `data/admin_scripts`
- `GET /api/admin/messages` — журнал сообщений с поиском
- `GET /api/admin/group`, `POST /api/admin/group`, `GET /api/admin/group/messages` — группы Telegram
- `GET /api/admin/tgmenu`, `POST /api/admin/tgmenu` — раскладка кнопок /start
- Карточки кабинета: «Система», «Скрипты», «Сообщения», «Меню /start»

## Конфигурация (`config.schema.json`)

- Обязательных нет.
- Опциональные (дефолты): `PAGE_SIZE` = `20`, `LOG_CONSOLE_MAX_MB` = `50`; остальные пусты по умолчанию: `ADMIN_PASS`, `CACHE_USER_MESSAGES`, `CACHE_FILE_NETWORK`, `SCAN_NETWORK_IGNORED_MACS`, `LOG_CONSOLE`, `BACKUP_DIR`, `F2B_CACHE`, `SYSTEMD_SERVICE`, `REMOTE_PASSWORD_WIN`, `REMOTE_PASSWORD_DOCKER`, `LOCAL_PASSWORD`, `REMOTE_HOST_WIN`, `REMOTE_USER_WIN`, `REMOTE_HOST_DOCKER`, `REMOTE_USER_DOCKER`

Манифест

{
  "name": "admin",
  "version": "0.2.6",
  "category": "base",
  "description": "Админ-ядро TG (AdminMenu): главное меню, права, скрипты, журнал, бэкапы.",
  "requires": [],
  "rights": [],
  "api_methods": [],
  "web_routes": [],
  "commit": "31123418db812eeb2ac6b9e04f50ab81ebfb1fd1",
  "updated": "2026-10-07 22:49:01 +0300",
  "history": [
    {
      "version": "0.1.0",
      "date": "2026-09-08 09:46:42 +0300",
      "commit": "5c758d465ca4dd3e1541909f2b685dc5c5424246"
    },
    {
      "version": "0.2.0",
      "date": "2026-09-11 10:24:38 +0300",
      "commit": "1fa8180d936fbda6caa5efa0841f338fe2e569b1"
    },
    {
      "version": "0.2.1",
      "date": "2026-09-12 23:22:16 +0300",
      "commit": "db9c47f797b3a96a29b646f86025a87d1eb4d645"
    },
    {
      "version": "0.2.2",
      "date": "2026-09-15 16:18:38 +0300",
      "commit": "6520ec407d8f5a66a187a35ddc0562ffd783dd88"
    },
    {
      "version": "0.2.3",
      "date": "2026-09-17 09:30:25 +0300",
      "commit": "47801cc7f98e5d02856f09e224f586aba5c5d256"
    },
    {
      "version": "0.2.4",
      "date": "2026-09-18 09:18:07 +0300",
      "commit": "beeac7ef95d41ef7030e4b58d501380279bbaacc"
    },
    {
      "version": "0.2.5",
      "date": "2026-09-18 09:31:34 +0300",
      "commit": "a73441e889e15108d49129a365df8986fe429862"
    },
    {
      "version": "0.2.6",
      "date": "2026-10-07 22:46:22 +0300",
      "commit": "30231374bb58d56272c7cdc2261989af7146d3a9"
    }
  ],
  "integrity": "sha256:8dccb85274278badf7066674c398f2e5ab75c982875222fc741dd82f4ebe5842",
  "files": "[12 файлов — см. вкладки ниже]",
  "note": "",
  "wdesc": "",
  "wbody": "",
  "_extra": {
    "api": "",
    "events_emitted": "[]",
    "events_subscribed": "[]",
    "audit_allow": "",
    "uses_rights": "",
    "tg_commands": "",
    "shared_routes": "",
    "config_schema": "config.schema.json",
    "env_example": ".env.example"
  }
}

Файлы и исходники

Дерево файлов

  • · корень
    • 4.7 КБ
    • 1.0 КБ
    • 0.5 КБ
    • 59.3 КБ
    • 3.4 КБ
    • 6.6 КБ
    • 0.6 КБ
    • 6.9 КБ
    • 1.4 КБ
    • 19.7 КБ
  • web/
    • 5.0 КБ
    • 20.5 КБ

Предпросмотр

Выберите файл в дереве выше — код откроется здесь.

История версий

versiondatecommit
0.2.62026-10-0730231374bb58
0.2.52026-09-18a73441e889e1
0.2.42026-09-18beeac7ef95d4
0.2.32026-09-1747801cc7f98e
0.2.22026-09-156520ec407d8f
0.2.12026-09-12db9c47f797b3
0.2.02026-09-111fa8180d936f
0.1.02026-09-085c758d465ca4