Releases: asykixd/uroboros
Releases · asykixd/uroboros
Release list
Uroboros 1.0.0
Первый стабильный релиз 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
Исправления к 0.1.0b2.
.restoreпадал сsqlite3.ProgrammingError: БД записывалась не из того потока. Теперь архив разбирается в отдельном потоке, а БД пишется в основном- При восстановлении сначала записывается БД, потом файлы модулей: если БД не запишется, модули останутся нетронутыми
Uroboros 0.1.0b2
Бета 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
Первая бета: готово ядро юзербота.
- Модули: установка по ссылке, с GitHub (
owner/repo/модуль, подключаемые репозитории) и из файла, автоустановка# requires: - Команды, алиасы, смена префикса, вотчеры
- Настройки модулей (
ModuleConfig) с валидаторами, хранилище на SQLite - Встроенные модули: help, loader, settings, config, eval, system
Пока нет: inline-бота, входа через веб-панель, совместимости с модулями Hikka.