ErisPulse 2.5.0.dev2__tar.gz → 2.5.2.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/PKG-INFO +269 -137
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/README.md +261 -134
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/pyproject.toml +10 -3
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/run.py +20 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/utils/package_manager.py +45 -4
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/utils/package_manager.pyi +3 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/adapter.py +19 -9
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/adapter.pyi +2 -2
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/adapter.py +22 -11
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/constants.py +23 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/__init__.py +83 -7
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/__init__.pyi +11 -5
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/locales/en.py +16 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/locales/ja.py +16 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/locales/ru.py +16 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/locales/zh_cn.py +16 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/locales/zh_tw.py +16 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/logger.py +34 -12
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/logger.pyi +10 -6
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/router.py +22 -12
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/storage.py +293 -9
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/storage.pyi +40 -3
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/loaders/__init__.py +4 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/loaders/__init__.pyi +1 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/loaders/adapter.py +28 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/loaders/adapter.pyi +1 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/loaders/bases/loader.py +32 -1
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/loaders/module.py +27 -4
- erispulse-2.5.2.dev0/src/ErisPulse/loaders/strict.py +297 -0
- erispulse-2.5.2.dev0/src/ErisPulse/loaders/strict.pyi +119 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/runtime/frame_config.py +6 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/runtime/frame_config.pyi +1 -1
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/sdk.py +95 -2
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/sdk.pyi +5 -0
- erispulse-2.5.2.dev0/src/ErisPulse/web_status/4xx.png +0 -0
- erispulse-2.5.2.dev0/src/ErisPulse/web_status/5xx.png +0 -0
- erispulse-2.5.2.dev0/src/ErisPulse/web_status/unknow.png +0 -0
- erispulse-2.5.0.dev2/src/ErisPulse/web_status/4xx.png +0 -0
- erispulse-2.5.0.dev2/src/ErisPulse/web_status/5xx.png +0 -0
- erispulse-2.5.0.dev2/src/ErisPulse/web_status/unknow.png +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/.gitignore +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/LICENSE +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/base.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/base.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/cli.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/cli.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/create.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/create.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/init.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/init.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/install.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/install.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/language.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/language.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/list.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/list.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/list_remote.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/list_remote.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/run.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/self_update.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/self_update.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/uninstall.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/uninstall.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/upgrade.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/commands/upgrade.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/console.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/console.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/locales/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/locales/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/locales/en.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/locales/en.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/locales/ja.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/locales/ja.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/locales/ru.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/locales/ru.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/locales/zh_cn.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/locales/zh_cn.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/locales/zh_tw.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/i18n/locales/zh_tw.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/registry.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/registry.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/utils/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/utils/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/utils/display.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/utils/display.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/utils/file_watcher.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/CLI/utils/file_watcher.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/client.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/client.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/errors.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/errors.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/manager.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/manager.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/module.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/module.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/router.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/router.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/storage.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/storage.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/websocket.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Bases/websocket.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/base.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/base.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/command.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/command.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/message.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/message.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/message_builder.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/message_builder.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/meta.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/meta.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/notice.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/notice.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/request.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/request.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/session_type.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/session_type.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/wrapper.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/Event/wrapper.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/adapter.pyi +3 -3
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/client.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/client.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/config.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/config.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/constants.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/constants.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/constants.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/locales/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/locales/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/locales/en.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/locales/ja.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/locales/ru.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/locales/zh_cn.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/i18n/locales/zh_tw.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/lifecycle.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/lifecycle.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/module.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/module.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/Core/router.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/__main__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/__main__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/finders/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/finders/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/finders/adapter.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/finders/adapter.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/finders/bases/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/finders/bases/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/finders/bases/finder.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/finders/bases/finder.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/finders/module.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/finders/module.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/loaders/bases/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/loaders/bases/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/loaders/bases/loader.pyi +1 -1
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/loaders/module.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/loaders/strategy.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/loaders/strategy.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/runtime/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/runtime/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/runtime/config_schema.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/runtime/config_schema.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/runtime/context.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/runtime/context.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/runtime/exceptions.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/runtime/exceptions.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/web_status/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2.dev0}/src/ErisPulse/web_status/__init__.pyi +0 -0
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ErisPulse
|
|
3
|
-
Version: 2.5.
|
|
3
|
+
Version: 2.5.2.dev0
|
|
4
4
|
Summary: ErisPulse 是一个模块化、可扩展的异步 Python SDK 框架,主要用于构建高效、可维护的机器人应用程序。
|
|
5
|
-
|
|
5
|
+
Project-URL: Homepage, https://github.com/ErisPulse/ErisPulse
|
|
6
|
+
Project-URL: Documentation, https://www.erisdev.com#docs
|
|
7
|
+
Project-URL: Repository, https://github.com/ErisPulse/ErisPulse
|
|
8
|
+
Project-URL: Issues, https://github.com/ErisPulse/ErisPulse/issues
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/ErisPulse/ErisPulse/blob/main/docs/en/bug-tracker.md
|
|
10
|
+
Project-URL: Changelog, https://github.com/ErisPulse/ErisPulse/blob/main/CHANGELOG.md
|
|
11
|
+
Author: ErisDev
|
|
6
12
|
Maintainer-email: "艾莉丝·格雷拉特(WSu2059)" <wsu2059@qq.com>
|
|
7
13
|
License: MIT License
|
|
8
14
|
|
|
@@ -44,7 +50,6 @@ Classifier: Typing :: Typed
|
|
|
44
50
|
Requires-Python: >=3.10
|
|
45
51
|
Requires-Dist: aiohttp>=3.9.0
|
|
46
52
|
Requires-Dist: fastapi>=0.116.1
|
|
47
|
-
Requires-Dist: pip>=23.0
|
|
48
53
|
Requires-Dist: rich>=13.0.0
|
|
49
54
|
Requires-Dist: toml>=0.10.2
|
|
50
55
|
Requires-Dist: uvicorn>=0.30.0
|
|
@@ -62,39 +67,104 @@ Requires-Dist: pytest-xdist>=3.0.0; extra == 'test'
|
|
|
62
67
|
Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
63
68
|
Description-Content-Type: text/markdown
|
|
64
69
|
|
|
70
|
+
<img src=".github/assets/mascot-hero.png" align="right" width="300" alt="ErisPulse" style="margin-left: 24px; margin-bottom: 16px; border-radius: 12px;" />
|
|
71
|
+
|
|
72
|
+
**English** | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md) | [日本語](README.ja.md) | [Русский](README.ru.md)
|
|
73
|
+
|
|
74
|
+
# ErisPulse
|
|
75
|
+
|
|
76
|
+
**Write once, deploy on multiple platforms.**
|
|
77
|
+
|
|
78
|
+
Event-driven multi-platform chatbot development framework.
|
|
79
|
+
|
|
80
|
+
Based on the OneBot12 standard interface, write once and deploy on multiple platforms. Flexible plugin system, hot reload support, and a complete developer toolchain, suitable for scenarios ranging from simple chatbots to complex automation systems.
|
|
81
|
+
|
|
82
|
+
<p>
|
|
83
|
+
<a href="https://pypi.org/project/ErisPulse/"><img src="https://img.shields.io/pypi/v/ErisPulse?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI"></a>
|
|
84
|
+
<a href="https://pypi.org/project/ErisPulse/"><img src="https://img.shields.io/badge/Python-3.10+-FFD43B?style=for-the-badge&logo=python&logoColor=blue" alt="Python"></a>
|
|
85
|
+
<a href="https://hub.docker.com/r/erispulse/erispulse"><img src="https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white" alt="Docker"></a>
|
|
86
|
+
<a href="https://github.com/ErisPulse/ErisPulse/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue?style=for-the-badge" alt="License"></a>
|
|
87
|
+
<a href="https://github.com/ErisPulse/ErisPulse"><img src="https://img.shields.io/github/stars/ErisPulse/ErisPulse?style=for-the-badge&logo=github&color=brightgreen" alt="Stars"></a>
|
|
88
|
+
<a href="https://pepy.tech/project/ErisPulse"><img src="https://img.shields.io/pepy/dt/ErisPulse?style=for-the-badge&color=blue" alt="Downloads"></a>
|
|
89
|
+
<a href="https://github.com/astral-sh/ruff"><img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json&style=for-the-badge" alt="Ruff"></a>
|
|
90
|
+
<a href="https://socket.dev/pypi/package/erispulse"><img src="https://img.shields.io/badge/Socket-Secure-2ea043?style=for-the-badge&logo=socket&logoColor=white" alt="Socket"></a>
|
|
91
|
+
<a href="https://www.erisdev.com"><img src="https://img.shields.io/badge/文档-erisdev.com-FF6B9D?style=for-the-badge&logo=bookstack&logoColor=white" alt="文档"></a>
|
|
92
|
+
<a href="https://www.erisdev.com/#market"><img src="https://img.shields.io/badge/模块市场-erisdev.com-C724B1?style=for-the-badge&logo=webpack&logoColor=white" alt="模块市场"></a>
|
|
93
|
+
<a href="https://github.com/ErisPulse/ErisPulse/discussions"><img src="https://img.shields.io/badge/GitHub-Discussions-181717?style=for-the-badge&logo=github" alt="讨论"></a>
|
|
94
|
+
</p>
|
|
95
|
+
|
|
96
|
+
<br clear="both">
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
<div align="center">
|
|
101
|
+
|
|
102
|
+
### Core Features
|
|
103
|
+
|
|
104
|
+
</div>
|
|
105
|
+
|
|
65
106
|
<table>
|
|
66
107
|
<tr>
|
|
67
|
-
<td width="
|
|
108
|
+
<td width="33%" align="center" valign="top">
|
|
109
|
+
<br/>
|
|
110
|
+
|
|
111
|
+
<img src=".github/assets/icon/icon_event_driven.png.png" width="50" alt="Event-driven Architecture" />
|
|
68
112
|
|
|
69
|
-
|
|
113
|
+
### Event-driven Architecture
|
|
114
|
+
|
|
115
|
+
A clear event model based on the OneBot12 standard, making message handling logic more intuitive and efficient
|
|
70
116
|
|
|
71
117
|
</td>
|
|
72
|
-
<td valign="
|
|
118
|
+
<td width="33%" align="center" valign="top">
|
|
119
|
+
<br/>
|
|
73
120
|
|
|
74
|
-
|
|
121
|
+
<img src=".github/assets/icon/icon_cross_platform.png.png" width="50" alt="Cross-platform Compatibility" />
|
|
75
122
|
|
|
76
|
-
|
|
123
|
+
### Cross-platform Compatibility
|
|
77
124
|
|
|
78
|
-
|
|
125
|
+
Write plugins once and use them on all platforms, no need to repeat development for different platforms
|
|
126
|
+
|
|
127
|
+
</td>
|
|
128
|
+
<td width="33%" align="center" valign="top">
|
|
129
|
+
<br/>
|
|
130
|
+
|
|
131
|
+
<img src=".github/assets/icon/icon_modular.png" width="50" alt="Modular Design" />
|
|
132
|
+
|
|
133
|
+
### Modular Design
|
|
79
134
|
|
|
80
|
-
|
|
135
|
+
A flexible plugin system, easy to extend and integrate, supports hot-plug module management
|
|
136
|
+
|
|
137
|
+
</td>
|
|
138
|
+
</tr>
|
|
139
|
+
<tr>
|
|
140
|
+
<td width="33%" align="center" valign="top">
|
|
141
|
+
<br/>
|
|
81
142
|
|
|
82
|
-
|
|
143
|
+
<img src=".github/assets/icon/icon_hot_reload.png" width="50" alt="Hot Reload" />
|
|
144
|
+
|
|
145
|
+
### Hot Reload
|
|
146
|
+
|
|
147
|
+
Reload code without restarting during development
|
|
148
|
+
|
|
149
|
+
</td>
|
|
150
|
+
<td width="33%" align="center" valign="top">
|
|
151
|
+
<br/>
|
|
152
|
+
|
|
153
|
+
<img src=".github/assets/icon/icon_ai_assist.png" width="50" alt="AI Assistance" />
|
|
154
|
+
|
|
155
|
+
### AI Assistance
|
|
156
|
+
|
|
157
|
+
AI-assisted development brings requirements directly to usable modules
|
|
158
|
+
|
|
159
|
+
</td>
|
|
160
|
+
<td width="33%" align="center" valign="top">
|
|
161
|
+
<br/>
|
|
83
162
|
|
|
84
|
-
|
|
163
|
+
<img src=".github/assets/icon/icon_lightweight.png" width="50" alt="Concise and Elegant" />
|
|
85
164
|
|
|
86
|
-
|
|
87
|
-
[](https://pypi.org/project/ErisPulse/)
|
|
88
|
-
[](https://hub.docker.com/r/erispulse/erispulse)
|
|
89
|
-
[](https://github.com/ErisPulse/ErisPulse/blob/main/LICENSE)
|
|
90
|
-
[](https://github.com/ErisPulse/ErisPulse)
|
|
91
|
-
[](https://pypi.org/project/ErisPulse/)
|
|
92
|
-
[](https://github.com/astral-sh/ruff)
|
|
93
|
-
[](https://socket.dev/pypi/package/erispulse)
|
|
165
|
+
### Concise and Elegant
|
|
94
166
|
|
|
95
|
-
|
|
96
|
-
[](https://www.erisdev.com/#market)
|
|
97
|
-
[](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
167
|
+
Intuitive API design, making code as light and readable as feathers
|
|
98
168
|
|
|
99
169
|
</td>
|
|
100
170
|
</tr>
|
|
@@ -102,46 +172,112 @@ Based on the OneBot12 standard interface, write once, deploy across multiple pla
|
|
|
102
172
|
|
|
103
173
|
---
|
|
104
174
|
|
|
105
|
-
|
|
175
|
+
## The Same Code. Multiple Platforms.
|
|
106
176
|
|
|
107
|
-
|
|
177
|
+
*Exactly the same command handlers. Different platforms. No business logic changes required.*
|
|
108
178
|
|
|
109
|
-
|
|
179
|
+
<table>
|
|
180
|
+
<tr>
|
|
181
|
+
<td align="center" width="33%">
|
|
182
|
+
|
|
183
|
+
**Kook**
|
|
184
|
+
|
|
185
|
+
<img src=".github/assets/demo-kook.png" alt="Kook Demo" />
|
|
186
|
+
|
|
187
|
+
</td>
|
|
188
|
+
<td align="center" width="33%">
|
|
189
|
+
|
|
190
|
+
**QQ**
|
|
191
|
+
|
|
192
|
+
<img src=".github/assets/demo-qq.png" alt="QQ Demo" />
|
|
193
|
+
|
|
194
|
+
</td>
|
|
195
|
+
<td align="center" width="33%">
|
|
196
|
+
|
|
197
|
+
**Yunhu**
|
|
198
|
+
|
|
199
|
+
<img src=".github/assets/demo-yunhu.png" alt="Yunhu Demo" />
|
|
200
|
+
|
|
201
|
+
</td>
|
|
202
|
+
</tr>
|
|
203
|
+
</table>
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Ecosystem
|
|
208
|
+
|
|
209
|
+
ErisPulse is more than just a framework. Install and start, no need to reinvent the wheel from scratch.
|
|
110
210
|
|
|
111
211
|
<table>
|
|
112
212
|
<tr>
|
|
113
|
-
<td
|
|
114
|
-
<br/>
|
|
213
|
+
<td align="center" width="25%">
|
|
115
214
|
|
|
116
|
-
|
|
215
|
+
**Framework**
|
|
117
216
|
|
|
118
|
-
|
|
217
|
+
Core runtime
|
|
218
|
+
|
|
219
|
+
Unified event & message model
|
|
119
220
|
|
|
120
221
|
</td>
|
|
121
|
-
<td
|
|
122
|
-
|
|
222
|
+
<td align="center" width="25%">
|
|
223
|
+
|
|
224
|
+
**Dashboard**
|
|
225
|
+
|
|
226
|
+
Visual management
|
|
227
|
+
|
|
228
|
+
Plugins · Logs · Configuration
|
|
229
|
+
|
|
230
|
+
[Online Demo →](https://dashdemo.erisdev.com/)
|
|
231
|
+
|
|
232
|
+
</td>
|
|
233
|
+
<td align="center" width="25%">
|
|
123
234
|
|
|
124
|
-
|
|
235
|
+
**AI Builder**
|
|
125
236
|
|
|
126
|
-
|
|
237
|
+
Natural language → usable modules
|
|
238
|
+
|
|
239
|
+
[Experience Now →](https://www.erisdev.com/#builder)
|
|
240
|
+
|
|
241
|
+
</td>
|
|
242
|
+
<td align="center" width="25%">
|
|
243
|
+
|
|
244
|
+
**Module Market**
|
|
245
|
+
|
|
246
|
+
Ready-to-use plugins
|
|
247
|
+
|
|
248
|
+
[Explore Modules →](https://www.erisdev.com/#market)
|
|
127
249
|
|
|
128
250
|
</td>
|
|
129
251
|
</tr>
|
|
130
252
|
<tr>
|
|
131
|
-
<td
|
|
132
|
-
<br/>
|
|
253
|
+
<td align="center" width="25%">
|
|
133
254
|
|
|
134
|
-
|
|
255
|
+
**Adapters**
|
|
135
256
|
|
|
136
|
-
|
|
257
|
+
Access to 15+ platforms
|
|
137
258
|
|
|
138
259
|
</td>
|
|
139
|
-
<td
|
|
140
|
-
|
|
260
|
+
<td align="center" width="25%">
|
|
261
|
+
|
|
262
|
+
**Documentation**
|
|
263
|
+
|
|
264
|
+
[erisdev.com](https://www.erisdev.com)
|
|
265
|
+
|
|
266
|
+
</td>
|
|
267
|
+
<td align="center" width="25%">
|
|
268
|
+
|
|
269
|
+
**Docker**
|
|
270
|
+
|
|
271
|
+
Multi-architecture support
|
|
272
|
+
|
|
273
|
+
`erispulse/erispulse`
|
|
274
|
+
|
|
275
|
+
</td>
|
|
276
|
+
<td align="center" width="25%">
|
|
141
277
|
|
|
142
|
-
|
|
278
|
+
**CLI**
|
|
143
279
|
|
|
144
|
-
|
|
280
|
+
`epsdk` scaffolding tool
|
|
145
281
|
|
|
146
282
|
</td>
|
|
147
283
|
</tr>
|
|
@@ -149,11 +285,27 @@ Reload code without restarting during development, greatly improving development
|
|
|
149
285
|
|
|
150
286
|
---
|
|
151
287
|
|
|
288
|
+
## Project Origin
|
|
289
|
+
|
|
290
|
+
ErisPulse was not born to be a framework.
|
|
291
|
+
|
|
292
|
+
It originated from **Amer** — a project for message interconnection and synchronization between different platforms.
|
|
293
|
+
|
|
294
|
+
As the number of connected platforms increased, we began maintaining the asynchronous version of **ryunhusdk2**, gradually abstracting a unified event model and adapter system.
|
|
295
|
+
|
|
296
|
+
These practices eventually evolved into today's ErisPulse.
|
|
297
|
+
|
|
298
|
+
Its goal has never changed:
|
|
299
|
+
|
|
300
|
+
**Let developers focus on business, not platform differences.**
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
152
304
|
### Quick Start
|
|
153
305
|
|
|
154
306
|
#### One-click Installation Script (Recommended)
|
|
155
307
|
|
|
156
|
-
The installation script automatically detects your environment (Docker, Python, uv), guides you to choose the most suitable installation method, and supports multiple languages (Chinese/English
|
|
308
|
+
The installation script automatically detects your environment (Docker, Python, uv), guides you to choose the most suitable installation method, and supports multiple languages (Chinese/English/日本語/Русский/繁體中文).
|
|
157
309
|
|
|
158
310
|
Windows (PowerShell):
|
|
159
311
|
```powershell
|
|
@@ -199,7 +351,7 @@ If Docker Hub is inaccessible, you can use GitHub Container Registry:
|
|
|
199
351
|
docker pull ghcr.io/erispulse/erispulse:latest
|
|
200
352
|
```
|
|
201
353
|
|
|
202
|
-
When using the ghcr.io image, modify the `docker-compose.yml`
|
|
354
|
+
When using the ghcr.io image, you need to modify the `docker-compose.yml` image:
|
|
203
355
|
```yaml
|
|
204
356
|
image: ghcr.io/erispulse/erispulse:latest
|
|
205
357
|
```
|
|
@@ -219,7 +371,7 @@ ERISPULSE_DASHBOARD_TOKEN=your-token docker compose up -d
|
|
|
219
371
|
|
|
220
372
|
> The image includes the ErisPulse framework and Dashboard management panel, supporting `linux/amd64` and `linux/arm64` architectures.
|
|
221
373
|
|
|
222
|
-
After
|
|
374
|
+
After starting, visit `http://<host>:<port>/Dashboard` and use the set token as the password to log in to the Dashboard management panel.
|
|
223
375
|
|
|
224
376
|
</details>
|
|
225
377
|
|
|
@@ -229,14 +381,14 @@ After startup, visit `http://<host>:<port>/Dashboard`, and use the set token as
|
|
|
229
381
|
Set `ERISPULSE_CHANNEL=dev` to use the pre-release version:
|
|
230
382
|
|
|
231
383
|
```bash
|
|
232
|
-
# Method 1:
|
|
384
|
+
# Method 1: Using environment variables (recommended)
|
|
233
385
|
ERISPULSE_CHANNEL=dev ERISPULSE_DASHBOARD_TOKEN=your-token docker compose up -d
|
|
234
386
|
|
|
235
|
-
# Method 2:
|
|
387
|
+
# Method 2: Building dev image
|
|
236
388
|
ERISPULSE_BUILD_TARGET=dev docker compose up -d --build
|
|
237
389
|
```
|
|
238
390
|
|
|
239
|
-
To
|
|
391
|
+
To ensure automatic update to the latest version at startup (regardless of stable or dev), explicitly set `ERISPULSE_UPDATE_ON_START=true`:
|
|
240
392
|
|
|
241
393
|
```bash
|
|
242
394
|
ERISPULSE_CHANNEL=dev ERISPULSE_UPDATE_ON_START=true docker compose up -d
|
|
@@ -253,27 +405,29 @@ docker pull erispulse/erispulse:dev
|
|
|
253
405
|
<details>
|
|
254
406
|
<summary>Docker Environment Variables</summary>
|
|
255
407
|
|
|
256
|
-
| Variable | Default
|
|
408
|
+
| Variable | Default | Description |
|
|
257
409
|
|------|--------|------|
|
|
258
|
-
| `ERISPULSE_CHANNEL` | `stable` | Version channel: `stable` (stable
|
|
410
|
+
| `ERISPULSE_CHANNEL` | `stable` | Version channel: `stable` (stable) or `dev` (pre-release) |
|
|
259
411
|
| `ERISPULSE_UPDATE_ON_START` | `false` | Whether to automatically update to the latest version when the container starts (must be explicitly enabled) |
|
|
260
412
|
| `ERISPULSE_DASHBOARD_TOKEN` | empty | Dashboard login token |
|
|
261
413
|
| `ERISPULSE_PORT` | `8000` | Dashboard port mapping |
|
|
262
414
|
| `TZ` | `Asia/Shanghai` | Container timezone |
|
|
263
415
|
|
|
264
|
-
> Setting `ERISPULSE_UPDATE_ON_START=true` ensures that even if the image is
|
|
416
|
+
> Setting `ERISPULSE_UPDATE_ON_START=true` ensures that even if the image is old, the container will automatically fetch the latest version at startup.
|
|
265
417
|
|
|
266
418
|
</details>
|
|
267
419
|
|
|
268
420
|
#### 1Panel App Store
|
|
269
421
|
|
|
270
|
-
Install ErisPulse one
|
|
422
|
+
Install ErisPulse with one click via the [1Panel](https://1panel.cn) app store, see [ErisPulse-1Panel](https://github.com/ErisPulse/ErisPulse-1Panel).
|
|
271
423
|
|
|
272
424
|
```bash
|
|
273
425
|
bash <(curl -sL https://get-1panel.erisdev.com/install.sh)
|
|
274
426
|
```
|
|
275
427
|
|
|
276
|
-
|
|
428
|
+
ErisPulse is available in the 1Panel third-party app store, and can be installed using the [okxlin/appstore](https://github.com/okxlin/appstore) third-party repository.
|
|
429
|
+
|
|
430
|
+
#### Install Using pip
|
|
277
431
|
|
|
278
432
|
```bash
|
|
279
433
|
pip install ErisPulse
|
|
@@ -281,58 +435,6 @@ pip install ErisPulse
|
|
|
281
435
|
|
|
282
436
|
> You can also use the one-click installation script above, which automatically detects the environment and guides configuration.
|
|
283
437
|
|
|
284
|
-
#### Running Effect
|
|
285
|
-
|
|
286
|
-
##### Dashboard:
|
|
287
|
-
|
|
288
|
-
[](https://dashdemo.erisdev.com/)
|
|
289
|
-
|
|
290
|
-
> 💡 Experience the live demo dashboard online: [DashDemo](https://dashdemo.erisdev.com/)
|
|
291
|
-
|
|
292
|
-
<table>
|
|
293
|
-
<tr>
|
|
294
|
-
<td width="50%">
|
|
295
|
-
|
|
296
|
-
<img src=".github/assets/docs/dashboard.png" alt="Dashboard Demo" />
|
|
297
|
-
|
|
298
|
-
</td>
|
|
299
|
-
<td width="50%">
|
|
300
|
-
|
|
301
|
-
<video src="https://github.com/user-attachments/assets/157191c4-9a84-433c-b311-0c57e3a21151" controls width="100%"></video>
|
|
302
|
-
|
|
303
|
-
</td>
|
|
304
|
-
</tr>
|
|
305
|
-
</table>
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
##### Same code, multiple platform responses:
|
|
309
|
-
|
|
310
|
-
<table>
|
|
311
|
-
<tr>
|
|
312
|
-
<td align="center" width="33%">
|
|
313
|
-
|
|
314
|
-
**Kook**
|
|
315
|
-
|
|
316
|
-
<img src=".github/assets/demo-kook.png" alt="Kook Demo" />
|
|
317
|
-
|
|
318
|
-
</td>
|
|
319
|
-
<td align="center" width="33%">
|
|
320
|
-
|
|
321
|
-
**QQ**
|
|
322
|
-
|
|
323
|
-
<img src=".github/assets/demo-qq.png" alt="QQ Demo" />
|
|
324
|
-
|
|
325
|
-
</td>
|
|
326
|
-
<td align="center" width="33%">
|
|
327
|
-
|
|
328
|
-
**Yunhu**
|
|
329
|
-
|
|
330
|
-
<img src=".github/assets/demo-yunhu.png" alt="Yunhu Demo" />
|
|
331
|
-
|
|
332
|
-
</td>
|
|
333
|
-
</tr>
|
|
334
|
-
</table>
|
|
335
|
-
|
|
336
438
|
#### Initialize Project
|
|
337
439
|
|
|
338
440
|
```bash
|
|
@@ -343,28 +445,28 @@ epsdk init
|
|
|
343
445
|
epsdk init -q -n my_bot
|
|
344
446
|
```
|
|
345
447
|
|
|
346
|
-
#### Create First
|
|
448
|
+
#### Create Your First Bot
|
|
347
449
|
|
|
348
|
-
Create `main.py` file:
|
|
450
|
+
Create a `main.py` file:
|
|
349
451
|
|
|
350
452
|
<table>
|
|
351
453
|
<tr>
|
|
352
454
|
<td width="50%" valign="top">
|
|
353
455
|
|
|
354
|
-
**Command
|
|
456
|
+
**Command Handlers**
|
|
355
457
|
|
|
356
458
|
```python
|
|
357
459
|
from ErisPulse import sdk
|
|
358
460
|
from ErisPulse.Core.Event import command
|
|
359
461
|
|
|
360
|
-
@command("hello", help="Send greeting message")
|
|
462
|
+
@command("hello", help="Send a greeting message")
|
|
361
463
|
async def hello_handler(event):
|
|
362
464
|
user_name = event.get_user_nickname() or "friend"
|
|
363
465
|
await event.reply(f"Hello, {user_name}!")
|
|
364
466
|
|
|
365
|
-
@command("ping", help="Test if the
|
|
467
|
+
@command("ping", help="Test if the bot is online")
|
|
366
468
|
async def ping_handler(event):
|
|
367
|
-
await event.reply("Pong! The
|
|
469
|
+
await event.reply("Pong! The bot is running normally.")
|
|
368
470
|
|
|
369
471
|
if __name__ == "__main__":
|
|
370
472
|
import asyncio
|
|
@@ -378,13 +480,13 @@ if __name__ == "__main__":
|
|
|
378
480
|
|
|
379
481
|
Send `/hello`
|
|
380
482
|
|
|
381
|
-
|
|
483
|
+
Bot replies: `Hello, {username}!`
|
|
382
484
|
|
|
383
485
|
---
|
|
384
486
|
|
|
385
487
|
Send `/ping`
|
|
386
488
|
|
|
387
|
-
|
|
489
|
+
Bot replies: `Pong! The bot is running normally.`
|
|
388
490
|
|
|
389
491
|
---
|
|
390
492
|
|
|
@@ -392,7 +494,7 @@ Robot replies: `Pong! The robot is running normally.`
|
|
|
392
494
|
|
|
393
495
|
```bash
|
|
394
496
|
epsdk run main.py
|
|
395
|
-
#
|
|
497
|
+
# or development mode
|
|
396
498
|
epsdk run main.py --reload
|
|
397
499
|
```
|
|
398
500
|
|
|
@@ -400,13 +502,13 @@ epsdk run main.py --reload
|
|
|
400
502
|
</tr>
|
|
401
503
|
</table>
|
|
402
504
|
|
|
403
|
-
For more detailed instructions,
|
|
505
|
+
For more detailed instructions, see:
|
|
404
506
|
- [Quick Start Guide](docs/en/quick-start.md)
|
|
405
|
-
- [Getting Started Guide](docs/en/getting-started
|
|
507
|
+
- [Getting Started Guide](docs/en/getting-started/)
|
|
406
508
|
|
|
407
509
|
#### Multi-turn Conversation Example
|
|
408
510
|
|
|
409
|
-
ErisPulse includes a powerful multi-turn conversation engine,
|
|
511
|
+
ErisPulse includes a powerful multi-turn conversation engine, easily enabling guided operations, information collection, and other interactive scenarios:
|
|
410
512
|
|
|
411
513
|
```python
|
|
412
514
|
from ErisPulse.Core.Event import command, request
|
|
@@ -426,7 +528,7 @@ async def register_handler(event):
|
|
|
426
528
|
])
|
|
427
529
|
|
|
428
530
|
if data and await conv.confirm(f"Confirm registration? Name: {data['name']}, Age: {data['age']}"):
|
|
429
|
-
#
|
|
531
|
+
# Push notifications using SendDSL
|
|
430
532
|
await sdk.adapter.get(event.get_platform()).Send.To(
|
|
431
533
|
"user", event.get_user_id()
|
|
432
534
|
).Text(f"Registration successful! Welcome {data['name']}")
|
|
@@ -440,18 +542,18 @@ async def handle_friend_request(event):
|
|
|
440
542
|
# Approve the request
|
|
441
543
|
result = await event.approve()
|
|
442
544
|
if result.get("status") == "ok":
|
|
443
|
-
await event.reply(f"Friend request approved
|
|
545
|
+
await event.reply(f"Friend request automatically approved, welcome {user_name}")
|
|
444
546
|
```
|
|
445
547
|
|
|
446
548
|
<details>
|
|
447
|
-
<summary>See
|
|
549
|
+
<summary>See More Conversation API (Branching / Selection / Persistence)</summary>
|
|
448
550
|
|
|
449
551
|
```python
|
|
450
552
|
@command("quiz")
|
|
451
553
|
async def quiz_handler(event):
|
|
452
554
|
conv = event.conversation(timeout=30)
|
|
453
555
|
|
|
454
|
-
# Multiple
|
|
556
|
+
# Multiple choice question
|
|
455
557
|
answer = await conv.choose("Who is the creator of Python?", [
|
|
456
558
|
"Guido van Rossum",
|
|
457
559
|
"James Gosling",
|
|
@@ -469,10 +571,10 @@ async def quiz_handler(event):
|
|
|
469
571
|
async def menu_handler(event):
|
|
470
572
|
conv = event.conversation(timeout=60)
|
|
471
573
|
|
|
472
|
-
# Branching,
|
|
574
|
+
# Branching, building complex interaction flows
|
|
473
575
|
@conv.branch("main")
|
|
474
576
|
async def main_menu():
|
|
475
|
-
await conv.say("=== Main Menu ===\n1. Personal
|
|
577
|
+
await conv.say("=== Main Menu ===\n1. Personal Info\n2. Settings\n3. Exit")
|
|
476
578
|
resp = await conv.wait()
|
|
477
579
|
if resp and resp.get_text().strip() == "1":
|
|
478
580
|
await conv.goto("profile")
|
|
@@ -493,50 +595,72 @@ See [Conversation Multi-turn Dialogue](docs/en/advanced/conversation.md)
|
|
|
493
595
|
|
|
494
596
|
---
|
|
495
597
|
|
|
496
|
-
|
|
598
|
+
## Supported Platforms
|
|
497
599
|
|
|
498
|
-
We welcome
|
|
600
|
+
We welcome contributions to adapters!
|
|
499
601
|
|
|
500
602
|
| Adapter | Description |
|
|
501
603
|
|--------|------|
|
|
502
|
-
| <img src=".github/assets/adapter_logo/kook.svg" height="20" alt="Kook" /> [Kook](https://github.com/shanfishapp/ErisPulse-KookAdapter) | Kook (
|
|
604
|
+
| <img src=".github/assets/adapter_logo/kook.svg" height="20" alt="Kook" /> [Kook](https://github.com/shanfishapp/ErisPulse-KookAdapter) | Kook (Kaihei La) instant messaging platform |
|
|
503
605
|
| <img src=".github/assets/adapter_logo/matrix.svg" height="20" alt="Matrix" /> [Matrix](https://github.com/ErisPulse/ErisPulse-MatrixAdapter) | Matrix decentralized communication protocol |
|
|
504
606
|
| <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot11](https://github.com/ErisPulse/ErisPulse-OneBot11Adapter) | OneBot v11 general robot protocol |
|
|
505
607
|
| <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot12](https://github.com/ErisPulse/ErisPulse-OneBot12Adapter) | OneBot v12 standard protocol |
|
|
506
|
-
| <img src=".github/assets/adapter_logo/qqbot.svg" height="20" alt="QQ" /> [QQ](https://github.com/ErisPulse/ErisPulse-QQBotAdapter) | Official QQ
|
|
608
|
+
| <img src=".github/assets/adapter_logo/qqbot.svg" height="20" alt="QQ" /> [QQ](https://github.com/ErisPulse/ErisPulse-QQBotAdapter) | Official QQ bot platform |
|
|
507
609
|
| <img src=".github/assets/adapter_logo/sandbox.png" height="20" alt="Sandbox" /> [Sandbox](https://github.com/ErisPulse/ErisPulse-SandboxAdapter) | Web-based debugging, no need to connect to real platforms |
|
|
508
610
|
| <img src=".github/assets/adapter_logo/telegram.svg" height="20" alt="Telegram" /> [Telegram](https://github.com/ErisPulse/ErisPulse-TelegramAdapter) | Global instant messaging platform |
|
|
509
611
|
| <img src=".github/assets/adapter_logo/email.svg" height="20" alt="Email" /> [Email](https://github.com/ErisPulse/ErisPulse-EmailAdapter) | Email protocol adapter for sending and receiving |
|
|
510
612
|
| <img src=".github/assets/adapter_logo/yunhu.png" height="20" alt="Yunhu" /> [Yunhu](https://github.com/ErisPulse/ErisPulse-YunhuAdapter) | Enterprise-level instant messaging platform (robot access) |
|
|
511
|
-
| [Yunhu User](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) | Access adapter based on
|
|
613
|
+
| <img src=".github/assets/adapter_logo/yunhu.png" height="20" alt="Yunhu" /> [Yunhu User](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) | Access adapter based on Yunhu user protocol |
|
|
512
614
|
| [Flower Maple Cafe](https://github.com/ErisPulse/ErisPulse-Ideaura/) | Allons! \(・ω・) / |
|
|
513
615
|
| <img src=".github/assets/adapter_logo/discord.svg" height="20" alt="Discord" /> [Discord](https://github.com/ErisPulse/ErisPulse-DiscordAdapter) | Global community communication platform, supports servers, channels, and private messages |
|
|
514
616
|
| <img src=".github/assets/adapter_logo/webhook.svg" height="20" alt="Webhook" /> [Webhook](https://github.com/ErisPulse/ErisPulse-WebhookAdapter) | General HTTP bridge adapter, connects to any system |
|
|
515
|
-
| <img src=".github/assets/adapter_logo/wechatmp.
|
|
617
|
+
| <img src=".github/assets/adapter_logo/wechatmp.svg" height="20" alt="WechatMp" /> [WeChat Official Account](https://github.com/ErisPulse/ErisPulse-WechatMpAdapter) | Official WeChat Official Account platform |
|
|
516
618
|
|
|
517
619
|
See [Adapter Details](docs/en/platform-guide/README.md)
|
|
518
620
|
|
|
519
621
|
---
|
|
520
622
|
|
|
521
|
-
###
|
|
623
|
+
### Use Cases
|
|
522
624
|
|
|
523
625
|
<div align="center">
|
|
524
626
|
|
|
525
|
-
| Multi-platform
|
|
627
|
+
| Multi-platform Bot | Chat Assistant | Automation Tool | Message Forwarding |
|
|
526
628
|
|:---:|:---:|:---:|:---:|
|
|
527
|
-
| Deploy
|
|
629
|
+
| Deploy identical bots on multiple platforms | Integrate AI chat modules for entertainment and interaction | Message notification, task management, data collection | Cross-platform message synchronization and forwarding |
|
|
528
630
|
|
|
529
631
|
</div>
|
|
530
632
|
|
|
531
633
|
---
|
|
532
634
|
|
|
533
|
-
|
|
635
|
+
## Community
|
|
636
|
+
|
|
637
|
+
Join the ErisPulse community to exchange and build the ecosystem with developers.
|
|
638
|
+
|
|
639
|
+
### Yunhu
|
|
640
|
+
|
|
641
|
+
Group ID: `635409929`
|
|
642
|
+
|
|
643
|
+
Join the group chat:
|
|
644
|
+
|
|
645
|
+
https://yhfx.jwznb.com/share?key=VWJL4fTWXepa&ts=1781889199
|
|
646
|
+
|
|
647
|
+
### QQ Group
|
|
534
648
|
|
|
535
|
-
|
|
649
|
+
https://qm.qq.com/q/TOwnCmypcy
|
|
650
|
+
|
|
651
|
+
### Telegram
|
|
652
|
+
|
|
653
|
+
https://t.me/ErisPulse
|
|
654
|
+
|
|
655
|
+
---
|
|
656
|
+
|
|
657
|
+
### Contribution Guidelines
|
|
658
|
+
|
|
659
|
+
The health of the ErisPulse project still needs your contribution! We welcome all forms of contributions:
|
|
536
660
|
|
|
537
661
|
1. **Report Issues** — Submit bug reports in [GitHub Issues](https://github.com/ErisPulse/ErisPulse/issues)
|
|
538
|
-
2. **Feature Requests** — Propose new ideas
|
|
539
|
-
3. **Code Contributions** —
|
|
662
|
+
2. **Feature Requests** — Propose new ideas via [Community Discussions](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
663
|
+
3. **Code Contributions** — Please read the [Code Style](docs/en/styleguide/) and [Contribution Guidelines](CONTRIBUTING.md) before submitting a PR
|
|
540
664
|
4. **Documentation Improvements** — Help improve documentation and example code
|
|
541
665
|
|
|
542
666
|
[Join Community Discussions](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
@@ -555,6 +679,14 @@ The health of the ErisPulse project still needs your contribution! We welcome va
|
|
|
555
679
|
|
|
556
680
|
<img src=".github/assets/thanks.png" width="200" alt="Thanks" />
|
|
557
681
|
|
|
558
|
-
This project is partially based on [sdkFrame](https://github.com/runoneall/sdkFrame)
|
|
682
|
+
This project is partially based on code from [sdkFrame](https://github.com/runoneall/sdkFrame).
|
|
683
|
+
|
|
684
|
+
The core adapter standardization layer references and benefits from the [OneBot12 specification](https://12.onebot.dev/).
|
|
685
|
+
|
|
686
|
+
Special thanks to the Yunhu ecosystem and community.
|
|
687
|
+
|
|
688
|
+
The early exploration and growth of ErisPulse would not have been possible without the support of the Yunhu developer community, where many ideas, adapters, and practical experiences originated.
|
|
689
|
+
|
|
690
|
+
We also thank all developers and project authors who have contributed to ErisPulse, OneBot, and the open-source community.
|
|
559
691
|
|
|
560
692
|
</div>
|