Skip to content

Releases: asykixd/uroboros

Uroboros 1.0.0

Choose a tag to compare

@asykixd asykixd released this 04 Oct 21:41

Первый стабильный релиз Uroboros. Публичный API модулей заморожен: дальше он меняется по semver, а всё устаревшее сначала выдаёт предупреждения (политика стабильности).

Установка

pip install uroboros-userbot

Другие способы (скрипт для Linux и Termux, systemd, Docker) — в документации.

Новое

  • Inline-бот на aiogram 3: формы, списки, галереи, ввод текста и подтверждения; inline-версии .help (со страницами), .cfg (с кнопками) и подтверждение .ulm.
  • Веб-панель первого входа: api_id/api_hash, номер, код, 2FA или QR-код. Тёмная и светлая темы.
  • Права доступа: группы owner/sudo/support, права на отдельные команды, команды от других пользователей.
  • Защита от флуда API: сторонний модуль, который шлёт слишком много запросов, замораживается.
  • Безопасность модулей:
    • проверка исходников перед установкой: опасный код в .dlm, .lm, .uplm и .restore ждёт подтверждения, подозрительное показывается;
    • защита во время работы: сторонним модулям закрыты сессия, файлы с ключами и опасные запросы; .security trust/untrust;
    • модули с GitHub закрепляются на коммите, .uplm показывает разницу перед обновлением;
    • если файл модуля подменили в обход Uroboros и в нём опасный код, модуль не загрузится;
    • # meta permissions: права модуля в шапке видны перед установкой;
    • модули ставятся только по https, а в # requires: разрешены только имена пакетов с версиями.
  • Модули: официальный репозиторий asykixd/uroboros-modules подключён по умолчанию, поиск по подключённым репозиториям (.search), подтверждение установки из чужих источников.
  • Обновления: каналы stable/beta, список изменений перед установкой, уведомление раз в сутки, откат, если новая версия не запускается. Установки через pip обновляются с PyPI. .dev on/.dev off переключают бота между ветками.
  • Автобэкап по расписанию: .cfg backup interval <часы>, chat <me | id чата>.
  • Установка: install.sh для Linux и Termux, служба systemd, Termux:Boot, Docker, пакет uroboros-userbot на PyPI.
  • Новый вид сообщений бота: карточки с иконками у полей и подсказками 💡.

Адаптер Hikka

  • Модули Hikka и FTG загружаются через адаптер: loader, utils, validators, inline.types, hikkatl → Telethon.
  • Поддержаны hikka_only и herokutl, generate_markup, клавиатуры для сообщений бота, get_entity(exp=, force=) и другие методы клиента Hikka-TL, inline.sanitise_text, self.inline._units, utils.asset_channel/dnd/invite_inline_bot/set_avatar, импорты from ..database и ..types.
  • Модули, которые используют внутренности Hikka, получают понятное сообщение об ошибке, а не AttributeError.

Исправления

  • SystemExit из модуля теперь считается ошибкой загрузки и не завершает бота.
  • Исправлена работа на Python 3.10–3.11 и Windows.

Для авторов модулей

  • Сайт документации на mkdocs: справочник команд и примеры генерируются из кода, есть страница о модели безопасности.
  • Стабильный API: слепок публичного API проверяется тестами, устаревание — через uroboros.deprecation.
  • @loop — фоновые задачи, которые останавливаются при выгрузке модуля.
  • Библиотеки: self.import_lib(url), один общий экземпляр, кеш на диске, выгрузка вместе с последним модулем.
  • Фильтры @command: only_pm, only_groups, only_channels, chats, only_reply, no_reply, filter; иконка команды — @command(emoji=...).
  • Шапка модуля: # meta developer/version, # requires_uroboros с проверкой версии ядра.
  • self.strings("key", **kw) с HTML-экранированием подстановок, utils.Html для готовой разметки, utils.card для карточек.
  • utils: answer_file, get_reply, get_chat_id, get_user, get_target, run_sync.
  • self.get/self.set — короткий доступ к хранилищу модуля; on_dlmod — настройка при первой установке.
  • Обработчики client.add_event_handler снимаются при выгрузке модуля.

Полный список изменений: v0.1.1b2...v1.0.0

Uroboros 0.1.1b2

Uroboros 0.1.1b2 Pre-release
Pre-release

Choose a tag to compare

@asykixd asykixd released this 03 Oct 20:11

Исправления к 0.1.0b2.

  • .restore падал с sqlite3.ProgrammingError: БД записывалась не из того потока. Теперь архив разбирается в отдельном потоке, а БД пишется в основном
  • При восстановлении сначала записывается БД, потом файлы модулей: если БД не запишется, модули останутся нетронутыми

Uroboros 0.1.0b2

Uroboros 0.1.0b2 Pre-release
Pre-release

Choose a tag to compare

@asykixd asykixd released this 03 Oct 20:04

Бета 0.1.0b2 — стабилизация ядра.

Новое

  • .logs [уровень] — логи файлом в «Избранное»; uroboros.log теперь ротируется (5 МБ × 3)
  • .backup / .restore — бэкап БД и модулей одним zip-архивом в «Избранное». Сессия и config.json в архив не попадают
  • .uplm [модуль] — обновление сторонних модулей из источника, откуда они были установлены

Надёжность

  • При выходе, перезапуске и SIGTERM модули выгружаются, и их on_unload отрабатывает
  • FloodWaitError: вместо traceback — сообщение, через сколько повторить
  • Второй экземпляр с той же папкой data/ не запускается (data/uroboros.lock)
  • Windows: перезапуск через процесс-надзиратель, бот остаётся в той же консоли
  • Windows: исходники модулей больше не портятся при бэкапе и восстановлении (удваивались переводы строк)

Разработка

  • CI: pytest на Python 3.10–3.13 под Linux, macOS и Windows, ruff
  • Безопасность модулей запланирована на 0.4, см. ROADMAP.md

Uroboros 0.1.0b1

Uroboros 0.1.0b1 Pre-release
Pre-release

Choose a tag to compare

@asykixd asykixd released this 03 Oct 13:39

Первая бета: готово ядро юзербота.

  • Модули: установка по ссылке, с GitHub (owner/repo/модуль, подключаемые репозитории) и из файла, автоустановка # requires:
  • Команды, алиасы, смена префикса, вотчеры
  • Настройки модулей (ModuleConfig) с валидаторами, хранилище на SQLite
  • Встроенные модули: help, loader, settings, config, eval, system

Пока нет: inline-бота, входа через веб-панель, совместимости с модулями Hikka.