ErisPulse 2.5.0.dev2__tar.gz → 2.5.2__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}/.gitignore +5 -2
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/PKG-INFO +267 -134
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/README.md +259 -131
- erispulse-2.5.2/pyproject.toml +208 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/cli.py +58 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/cli.pyi +8 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/create.py +39 -27
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/init.py +1 -1
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/list.py +32 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/list.pyi +7 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/list_remote.py +1 -1
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/run.py +27 -3
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/run.pyi +8 -2
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/console.py +1 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/locales/en.py +13 -10
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/locales/ja.py +13 -10
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/locales/ru.py +13 -10
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/locales/zh_cn.py +13 -10
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/locales/zh_tw.py +13 -10
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/utils/package_manager.py +4 -2
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/__init__.py +2 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/__init__.pyi +1 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/adapter.py +119 -58
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/adapter.pyi +33 -31
- erispulse-2.5.2/src/ErisPulse/Core/Bases/kv_builder.py +378 -0
- erispulse-2.5.2/src/ErisPulse/Core/Bases/kv_builder.pyi +126 -0
- erispulse-2.5.2/src/ErisPulse/Core/Bases/module.py +216 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/module.pyi +57 -4
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/storage.py +99 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/storage.pyi +68 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/__init__.py +33 -31
- erispulse-2.5.2/src/ErisPulse/Core/Event/__init__.pyi +26 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/base.py +108 -29
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/base.pyi +8 -7
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/command.py +134 -14
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/command.pyi +2 -1
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/session_type.py +2 -2
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/wrapper.py +268 -67
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/wrapper.pyi +142 -30
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/__init__.py +2 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/__init__.pyi +1 -1
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/adapter.py +69 -27
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/adapter.pyi +13 -5
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/client.py +19 -9
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/client.pyi +7 -1
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/config.py +82 -15
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/config.pyi +30 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/constants.py +119 -90
- erispulse-2.5.2/src/ErisPulse/Core/constants.pyi +206 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/__init__.py +83 -7
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/__init__.pyi +11 -5
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/locales/en.py +65 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/locales/ja.py +65 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/locales/ru.py +65 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/locales/zh_cn.py +65 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/locales/zh_tw.py +65 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/lifecycle.py +19 -1
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/lifecycle.pyi +2 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/logger.py +189 -44
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/logger.pyi +44 -10
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/module.py +39 -7
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/module.pyi +10 -2
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/router.py +67 -22
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/storage.py +368 -20
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/storage.pyi +40 -3
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/finders/bases/finder.py +5 -4
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/loaders/__init__.py +4 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/loaders/__init__.pyi +1 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/loaders/adapter.py +28 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/loaders/adapter.pyi +1 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/loaders/bases/loader.py +35 -2
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/loaders/module.py +33 -10
- erispulse-2.5.2/src/ErisPulse/loaders/strict.py +297 -0
- erispulse-2.5.2/src/ErisPulse/loaders/strict.pyi +119 -0
- erispulse-2.5.2/src/ErisPulse/py.typed +4 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/runtime/__init__.py +19 -2
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/runtime/__init__.pyi +2 -1
- erispulse-2.5.2/src/ErisPulse/runtime/config_schema.py +572 -0
- erispulse-2.5.2/src/ErisPulse/runtime/config_schema.pyi +268 -0
- erispulse-2.5.2/src/ErisPulse/runtime/exceptions.py +247 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/runtime/exceptions.pyi +26 -1
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/runtime/frame_config.py +6 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/runtime/frame_config.pyi +1 -1
- erispulse-2.5.2/src/ErisPulse/runtime/hints.py +376 -0
- erispulse-2.5.2/src/ErisPulse/runtime/hints.pyi +153 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/sdk.py +160 -2
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/sdk.pyi +15 -0
- erispulse-2.5.2/src/ErisPulse/web_status/4xx.png +0 -0
- erispulse-2.5.2/src/ErisPulse/web_status/5xx.png +0 -0
- erispulse-2.5.2/src/ErisPulse/web_status/unknow.png +0 -0
- erispulse-2.5.0.dev2/pyproject.toml +0 -117
- erispulse-2.5.0.dev2/src/ErisPulse/Core/Bases/module.py +0 -109
- erispulse-2.5.0.dev2/src/ErisPulse/Core/Event/__init__.pyi +0 -26
- erispulse-2.5.0.dev2/src/ErisPulse/Core/constants.pyi +0 -18
- erispulse-2.5.0.dev2/src/ErisPulse/runtime/config_schema.py +0 -344
- erispulse-2.5.0.dev2/src/ErisPulse/runtime/config_schema.pyi +0 -136
- erispulse-2.5.0.dev2/src/ErisPulse/runtime/exceptions.py +0 -132
- 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}/LICENSE +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/base.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/base.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/create.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/init.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/install.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/install.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/language.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/language.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/list_remote.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/self_update.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/self_update.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/uninstall.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/uninstall.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/upgrade.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/commands/upgrade.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/console.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/locales/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/locales/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/locales/en.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/locales/ja.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/locales/ru.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/locales/zh_cn.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/i18n/locales/zh_tw.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/registry.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/registry.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/utils/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/utils/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/utils/display.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/utils/display.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/utils/file_watcher.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/utils/file_watcher.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/CLI/utils/package_manager.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/client.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/client.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/errors.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/errors.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/manager.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/manager.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/router.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/router.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/websocket.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Bases/websocket.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/message.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/message.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/message_builder.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/message_builder.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/meta.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/meta.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/notice.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/notice.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/request.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/request.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/Event/session_type.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/constants.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/constants.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/locales/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/locales/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/locales/en.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/locales/ja.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/locales/ru.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/locales/zh_cn.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/i18n/locales/zh_tw.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/Core/router.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/__main__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/__main__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/finders/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/finders/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/finders/adapter.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/finders/adapter.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/finders/bases/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/finders/bases/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/finders/bases/finder.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/finders/module.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/finders/module.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/loaders/bases/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/loaders/bases/__init__.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/loaders/bases/loader.pyi +1 -1
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/loaders/module.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/loaders/strategy.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/loaders/strategy.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/runtime/context.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/runtime/context.pyi +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/web_status/__init__.py +0 -0
- {erispulse-2.5.0.dev2 → erispulse-2.5.2}/src/ErisPulse/web_status/__init__.pyi +0 -0
|
@@ -16,6 +16,9 @@ config/config.db-journal
|
|
|
16
16
|
config/config.db-wal
|
|
17
17
|
config/config.db-shm
|
|
18
18
|
|
|
19
|
+
# site-packages
|
|
20
|
+
config/.packages
|
|
21
|
+
|
|
19
22
|
# Byte-compiled / optimized / DLL files
|
|
20
23
|
__pycache__/
|
|
21
24
|
*.py[cod]
|
|
@@ -187,9 +190,9 @@ cython_debug/
|
|
|
187
190
|
#.idea/
|
|
188
191
|
|
|
189
192
|
# Visual Studio Code
|
|
190
|
-
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
|
193
|
+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
|
191
194
|
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
|
192
|
-
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
|
195
|
+
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
|
193
196
|
# you could uncomment the following to ignore the enitre vscode folder
|
|
194
197
|
# .vscode/
|
|
195
198
|
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ErisPulse
|
|
3
|
-
Version: 2.5.
|
|
3
|
+
Version: 2.5.2
|
|
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,105 @@ 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 various scenarios 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://deepwiki.com/ErisPulse/ErisPulse"><img src="https://img.shields.io/badge/DeepWiki-ErisPulse-8A2BE2?style=for-the-badge&logo=readthedocs&logoColor=white" alt="DeepWiki"></a>
|
|
93
|
+
<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>
|
|
94
|
+
<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>
|
|
95
|
+
</p>
|
|
96
|
+
|
|
97
|
+
<br clear="both">
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
<div align="center">
|
|
102
|
+
|
|
103
|
+
### Core Features
|
|
104
|
+
|
|
105
|
+
</div>
|
|
106
|
+
|
|
65
107
|
<table>
|
|
66
108
|
<tr>
|
|
67
|
-
<td width="
|
|
109
|
+
<td width="33%" align="center" valign="top">
|
|
110
|
+
<br/>
|
|
111
|
+
|
|
112
|
+
<img src=".github/assets/icon/icon_event_driven.png.png" width="50" alt="Event-driven Architecture" />
|
|
113
|
+
|
|
114
|
+
### Event-driven Architecture
|
|
115
|
+
|
|
116
|
+
A clear event model based on the OneBot12 standard, making message handling logic more intuitive and efficient
|
|
68
117
|
|
|
69
|
-
|
|
118
|
+
</td>
|
|
119
|
+
<td width="33%" align="center" valign="top">
|
|
120
|
+
<br/>
|
|
121
|
+
|
|
122
|
+
<img src=".github/assets/icon/icon_cross_platform.png.png" width="50" alt="Cross-platform Compatibility" />
|
|
123
|
+
|
|
124
|
+
### Cross-platform Compatibility
|
|
125
|
+
|
|
126
|
+
Write plugin modules once and use them on all platforms, no need to repeat development for different platforms
|
|
70
127
|
|
|
71
128
|
</td>
|
|
72
|
-
<td valign="
|
|
129
|
+
<td width="33%" align="center" valign="top">
|
|
130
|
+
<br/>
|
|
73
131
|
|
|
74
|
-
|
|
132
|
+
<img src=".github/assets/icon/icon_modular.png" width="50" alt="Modular Design" />
|
|
75
133
|
|
|
76
|
-
|
|
134
|
+
### Modular Design
|
|
77
135
|
|
|
78
|
-
|
|
136
|
+
A flexible plugin system, easy to extend and integrate, supports hot-plug module management
|
|
137
|
+
|
|
138
|
+
</td>
|
|
139
|
+
</tr>
|
|
140
|
+
<tr>
|
|
141
|
+
<td width="33%" align="center" valign="top">
|
|
142
|
+
<br/>
|
|
143
|
+
|
|
144
|
+
<img src=".github/assets/icon/icon_hot_reload.png" width="50" alt="Hot Reload" />
|
|
145
|
+
|
|
146
|
+
### Hot Reload
|
|
79
147
|
|
|
80
|
-
|
|
148
|
+
Reload code without restarting during development
|
|
149
|
+
|
|
150
|
+
</td>
|
|
151
|
+
<td width="33%" align="center" valign="top">
|
|
152
|
+
<br/>
|
|
81
153
|
|
|
82
|
-
|
|
154
|
+
<img src=".github/assets/icon/icon_ai_assist.png" width="50" alt="AI Assistance" />
|
|
155
|
+
|
|
156
|
+
### AI Assistance
|
|
157
|
+
|
|
158
|
+
AI-assisted development brings requirements directly to usable modules
|
|
159
|
+
|
|
160
|
+
</td>
|
|
161
|
+
<td width="33%" align="center" valign="top">
|
|
162
|
+
<br/>
|
|
83
163
|
|
|
84
|
-
|
|
164
|
+
<img src=".github/assets/icon/icon_lightweight.png" width="50" alt="Lightweight and Elegant" />
|
|
85
165
|
|
|
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)
|
|
166
|
+
### Lightweight and Elegant
|
|
94
167
|
|
|
95
|
-
|
|
96
|
-
[](https://www.erisdev.com/#market)
|
|
97
|
-
[](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
168
|
+
Intuitive API design, making code as light and readable as feathers
|
|
98
169
|
|
|
99
170
|
</td>
|
|
100
171
|
</tr>
|
|
@@ -102,46 +173,112 @@ Based on the OneBot12 standard interface, write once, deploy across multiple pla
|
|
|
102
173
|
|
|
103
174
|
---
|
|
104
175
|
|
|
105
|
-
|
|
176
|
+
## The Same Code. Multiple Platforms.
|
|
106
177
|
|
|
107
|
-
|
|
178
|
+
*Identical command handlers. Different platforms. No need to modify any business logic.*
|
|
108
179
|
|
|
109
|
-
|
|
180
|
+
<table>
|
|
181
|
+
<tr>
|
|
182
|
+
<td align="center" width="33%">
|
|
183
|
+
|
|
184
|
+
**Kook**
|
|
185
|
+
|
|
186
|
+
<img src=".github/assets/demo-kook.png" alt="Kook Demo" />
|
|
187
|
+
|
|
188
|
+
</td>
|
|
189
|
+
<td align="center" width="33%">
|
|
190
|
+
|
|
191
|
+
**QQ**
|
|
192
|
+
|
|
193
|
+
<img src=".github/assets/demo-qq.png" alt="QQ Demo" />
|
|
194
|
+
|
|
195
|
+
</td>
|
|
196
|
+
<td align="center" width="33%">
|
|
197
|
+
|
|
198
|
+
**Yunhu**
|
|
199
|
+
|
|
200
|
+
<img src=".github/assets/demo-yunhu.png" alt="Yunhu Demo" />
|
|
201
|
+
|
|
202
|
+
</td>
|
|
203
|
+
</tr>
|
|
204
|
+
</table>
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Ecosystem
|
|
209
|
+
|
|
210
|
+
ErisPulse is not just a framework. Install and start, no need to build wheels from scratch.
|
|
110
211
|
|
|
111
212
|
<table>
|
|
112
213
|
<tr>
|
|
113
|
-
<td
|
|
114
|
-
<br/>
|
|
214
|
+
<td align="center" width="25%">
|
|
115
215
|
|
|
116
|
-
|
|
216
|
+
**Framework**
|
|
117
217
|
|
|
118
|
-
|
|
218
|
+
Core runtime
|
|
219
|
+
|
|
220
|
+
Unified event & message model
|
|
119
221
|
|
|
120
222
|
</td>
|
|
121
|
-
<td
|
|
122
|
-
|
|
223
|
+
<td align="center" width="25%">
|
|
224
|
+
|
|
225
|
+
**Dashboard**
|
|
226
|
+
|
|
227
|
+
Visual management
|
|
228
|
+
|
|
229
|
+
Plugins · Logs · Configuration
|
|
230
|
+
|
|
231
|
+
[Online Demo →](https://dashdemo.erisdev.com/)
|
|
232
|
+
|
|
233
|
+
</td>
|
|
234
|
+
<td align="center" width="25%">
|
|
235
|
+
|
|
236
|
+
**AI Builder**
|
|
123
237
|
|
|
124
|
-
|
|
238
|
+
Natural language → Usable modules
|
|
125
239
|
|
|
126
|
-
|
|
240
|
+
[Experience Now →](https://www.erisdev.com/#builder)
|
|
241
|
+
|
|
242
|
+
</td>
|
|
243
|
+
<td align="center" width="25%">
|
|
244
|
+
|
|
245
|
+
**Module Market**
|
|
246
|
+
|
|
247
|
+
Ready-to-use plugins
|
|
248
|
+
|
|
249
|
+
[Browse Modules →](https://www.erisdev.com/#market)
|
|
127
250
|
|
|
128
251
|
</td>
|
|
129
252
|
</tr>
|
|
130
253
|
<tr>
|
|
131
|
-
<td
|
|
132
|
-
<br/>
|
|
254
|
+
<td align="center" width="25%">
|
|
133
255
|
|
|
134
|
-
|
|
256
|
+
**Adapters**
|
|
135
257
|
|
|
136
|
-
|
|
258
|
+
Support for 15+ platforms
|
|
137
259
|
|
|
138
260
|
</td>
|
|
139
|
-
<td
|
|
140
|
-
|
|
261
|
+
<td align="center" width="25%">
|
|
262
|
+
|
|
263
|
+
**Documentation**
|
|
264
|
+
|
|
265
|
+
[erisdev.com](https://www.erisdev.com)
|
|
266
|
+
|
|
267
|
+
</td>
|
|
268
|
+
<td align="center" width="25%">
|
|
141
269
|
|
|
142
|
-
|
|
270
|
+
**Docker**
|
|
143
271
|
|
|
144
|
-
|
|
272
|
+
Multi-architecture support
|
|
273
|
+
|
|
274
|
+
`erispulse/erispulse`
|
|
275
|
+
|
|
276
|
+
</td>
|
|
277
|
+
<td align="center" width="25%">
|
|
278
|
+
|
|
279
|
+
**CLI**
|
|
280
|
+
|
|
281
|
+
`epsdk` scaffolding tool
|
|
145
282
|
|
|
146
283
|
</td>
|
|
147
284
|
</tr>
|
|
@@ -149,11 +286,27 @@ Reload code without restarting during development, greatly improving development
|
|
|
149
286
|
|
|
150
287
|
---
|
|
151
288
|
|
|
289
|
+
## Project Origin
|
|
290
|
+
|
|
291
|
+
ErisPulse was not born to become a framework.
|
|
292
|
+
|
|
293
|
+
It originated from **Amer** — a project for message interconnection and synchronization between different platforms.
|
|
294
|
+
|
|
295
|
+
As more platforms were integrated, we began maintaining the asynchronous version of **ryunhusdk2**, and gradually abstracted a unified event model and adapter system.
|
|
296
|
+
|
|
297
|
+
These practices eventually evolved into today's ErisPulse.
|
|
298
|
+
|
|
299
|
+
Its goal has never changed:
|
|
300
|
+
|
|
301
|
+
**Let developers focus on business, not platform differences.**
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
152
305
|
### Quick Start
|
|
153
306
|
|
|
154
307
|
#### One-click Installation Script (Recommended)
|
|
155
308
|
|
|
156
|
-
The installation script automatically
|
|
309
|
+
The installation script will automatically detect your environment (Docker, Python, uv), guide you to choose the most suitable installation method, and support multiple languages (Chinese/English/日本語/Русский/繁體中文).
|
|
157
310
|
|
|
158
311
|
Windows (PowerShell):
|
|
159
312
|
```powershell
|
|
@@ -191,7 +344,7 @@ docker pull erispulse/erispulse:latest
|
|
|
191
344
|
```
|
|
192
345
|
|
|
193
346
|
<details>
|
|
194
|
-
<summary>
|
|
347
|
+
<summary>Docker Hub unavailable?</summary>
|
|
195
348
|
|
|
196
349
|
If Docker Hub is inaccessible, you can use GitHub Container Registry:
|
|
197
350
|
|
|
@@ -199,7 +352,7 @@ If Docker Hub is inaccessible, you can use GitHub Container Registry:
|
|
|
199
352
|
docker pull ghcr.io/erispulse/erispulse:latest
|
|
200
353
|
```
|
|
201
354
|
|
|
202
|
-
When using the ghcr.io image, modify the `docker-compose.yml`
|
|
355
|
+
When using the ghcr.io image, you need to modify the `docker-compose.yml` image:
|
|
203
356
|
```yaml
|
|
204
357
|
image: ghcr.io/erispulse/erispulse:latest
|
|
205
358
|
```
|
|
@@ -219,7 +372,7 @@ ERISPULSE_DASHBOARD_TOKEN=your-token docker compose up -d
|
|
|
219
372
|
|
|
220
373
|
> The image includes the ErisPulse framework and Dashboard management panel, supporting `linux/amd64` and `linux/arm64` architectures.
|
|
221
374
|
|
|
222
|
-
After startup,
|
|
375
|
+
After startup, access `http://<host>:<port>/Dashboard` and use the set token as the password to log in to the Dashboard management panel.
|
|
223
376
|
|
|
224
377
|
</details>
|
|
225
378
|
|
|
@@ -229,7 +382,7 @@ After startup, visit `http://<host>:<port>/Dashboard`, and use the set token as
|
|
|
229
382
|
Set `ERISPULSE_CHANNEL=dev` to use the pre-release version:
|
|
230
383
|
|
|
231
384
|
```bash
|
|
232
|
-
# Method 1: Use environment
|
|
385
|
+
# Method 1: Use environment variables (recommended)
|
|
233
386
|
ERISPULSE_CHANNEL=dev ERISPULSE_DASHBOARD_TOKEN=your-token docker compose up -d
|
|
234
387
|
|
|
235
388
|
# Method 2: Build dev image
|
|
@@ -254,25 +407,27 @@ docker pull erispulse/erispulse:dev
|
|
|
254
407
|
<summary>Docker Environment Variables</summary>
|
|
255
408
|
|
|
256
409
|
| Variable | Default Value | Description |
|
|
257
|
-
|
|
258
|
-
| `ERISPULSE_CHANNEL` | `stable` | Version channel: `stable` (stable
|
|
410
|
+
|----------|---------------|-------------|
|
|
411
|
+
| `ERISPULSE_CHANNEL` | `stable` | Version channel: `stable` (stable) or `dev` (pre-release) |
|
|
259
412
|
| `ERISPULSE_UPDATE_ON_START` | `false` | Whether to automatically update to the latest version when the container starts (must be explicitly enabled) |
|
|
260
413
|
| `ERISPULSE_DASHBOARD_TOKEN` | empty | Dashboard login token |
|
|
261
414
|
| `ERISPULSE_PORT` | `8000` | Dashboard port mapping |
|
|
262
415
|
| `TZ` | `Asia/Shanghai` | Container timezone |
|
|
263
416
|
|
|
264
|
-
>
|
|
417
|
+
> Enabling `ERISPULSE_UPDATE_ON_START=true` ensures that even if the image is old, the container will automatically fetch the latest version at startup.
|
|
265
418
|
|
|
266
419
|
</details>
|
|
267
420
|
|
|
268
421
|
#### 1Panel App Store
|
|
269
422
|
|
|
270
|
-
Install ErisPulse one
|
|
423
|
+
Install ErisPulse with one click through the [1Panel](https://1panel.cn) app store, see [ErisPulse-1Panel](https://github.com/ErisPulse/ErisPulse-1Panel).
|
|
271
424
|
|
|
272
425
|
```bash
|
|
273
426
|
bash <(curl -sL https://get-1panel.erisdev.com/install.sh)
|
|
274
427
|
```
|
|
275
428
|
|
|
429
|
+
ErisPulse is listed in the 1Panel third-party app store and can be installed using the third-party repository [okxlin/appstore](https://github.com/okxlin/appstore).
|
|
430
|
+
|
|
276
431
|
#### Using pip Installation
|
|
277
432
|
|
|
278
433
|
```bash
|
|
@@ -281,58 +436,6 @@ pip install ErisPulse
|
|
|
281
436
|
|
|
282
437
|
> You can also use the one-click installation script above, which automatically detects the environment and guides configuration.
|
|
283
438
|
|
|
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
439
|
#### Initialize Project
|
|
337
440
|
|
|
338
441
|
```bash
|
|
@@ -343,28 +446,28 @@ epsdk init
|
|
|
343
446
|
epsdk init -q -n my_bot
|
|
344
447
|
```
|
|
345
448
|
|
|
346
|
-
#### Create First
|
|
449
|
+
#### Create Your First Bot
|
|
347
450
|
|
|
348
|
-
Create `main.py` file:
|
|
451
|
+
Create a `main.py` file:
|
|
349
452
|
|
|
350
453
|
<table>
|
|
351
454
|
<tr>
|
|
352
455
|
<td width="50%" valign="top">
|
|
353
456
|
|
|
354
|
-
**Command
|
|
457
|
+
**Command Handlers**
|
|
355
458
|
|
|
356
459
|
```python
|
|
357
460
|
from ErisPulse import sdk
|
|
358
461
|
from ErisPulse.Core.Event import command
|
|
359
462
|
|
|
360
|
-
@command("hello", help="Send greeting message")
|
|
463
|
+
@command("hello", help="Send a greeting message")
|
|
361
464
|
async def hello_handler(event):
|
|
362
465
|
user_name = event.get_user_nickname() or "friend"
|
|
363
466
|
await event.reply(f"Hello, {user_name}!")
|
|
364
467
|
|
|
365
|
-
@command("ping", help="Test if the
|
|
468
|
+
@command("ping", help="Test if the bot is online")
|
|
366
469
|
async def ping_handler(event):
|
|
367
|
-
await event.reply("Pong! The
|
|
470
|
+
await event.reply("Pong! The bot is running normally.")
|
|
368
471
|
|
|
369
472
|
if __name__ == "__main__":
|
|
370
473
|
import asyncio
|
|
@@ -378,13 +481,13 @@ if __name__ == "__main__":
|
|
|
378
481
|
|
|
379
482
|
Send `/hello`
|
|
380
483
|
|
|
381
|
-
|
|
484
|
+
Bot replies: `Hello, {username}!`
|
|
382
485
|
|
|
383
486
|
---
|
|
384
487
|
|
|
385
488
|
Send `/ping`
|
|
386
489
|
|
|
387
|
-
|
|
490
|
+
Bot replies: `Pong! The bot is running normally.`
|
|
388
491
|
|
|
389
492
|
---
|
|
390
493
|
|
|
@@ -392,7 +495,7 @@ Robot replies: `Pong! The robot is running normally.`
|
|
|
392
495
|
|
|
393
496
|
```bash
|
|
394
497
|
epsdk run main.py
|
|
395
|
-
# Or development mode
|
|
498
|
+
# Or in development mode
|
|
396
499
|
epsdk run main.py --reload
|
|
397
500
|
```
|
|
398
501
|
|
|
@@ -400,13 +503,13 @@ epsdk run main.py --reload
|
|
|
400
503
|
</tr>
|
|
401
504
|
</table>
|
|
402
505
|
|
|
403
|
-
For more detailed instructions,
|
|
506
|
+
For more detailed instructions, see:
|
|
404
507
|
- [Quick Start Guide](docs/en/quick-start.md)
|
|
405
|
-
- [Getting Started Guide](docs/en/getting-started
|
|
508
|
+
- [Getting Started Guide](docs/en/getting-started/)
|
|
406
509
|
|
|
407
510
|
#### Multi-turn Conversation Example
|
|
408
511
|
|
|
409
|
-
ErisPulse
|
|
512
|
+
ErisPulse has a powerful built-in multi-turn conversation engine, making it easy to implement guided operations, information collection, and other interactive scenarios:
|
|
410
513
|
|
|
411
514
|
```python
|
|
412
515
|
from ErisPulse.Core.Event import command, request
|
|
@@ -426,7 +529,7 @@ async def register_handler(event):
|
|
|
426
529
|
])
|
|
427
530
|
|
|
428
531
|
if data and await conv.confirm(f"Confirm registration? Name: {data['name']}, Age: {data['age']}"):
|
|
429
|
-
#
|
|
532
|
+
# Push notifications using SendDSL
|
|
430
533
|
await sdk.adapter.get(event.get_platform()).Send.To(
|
|
431
534
|
"user", event.get_user_id()
|
|
432
535
|
).Text(f"Registration successful! Welcome {data['name']}")
|
|
@@ -444,7 +547,7 @@ async def handle_friend_request(event):
|
|
|
444
547
|
```
|
|
445
548
|
|
|
446
549
|
<details>
|
|
447
|
-
<summary>See
|
|
550
|
+
<summary>See More Conversation API (Branching / Selection / Persistence)</summary>
|
|
448
551
|
|
|
449
552
|
```python
|
|
450
553
|
@command("quiz")
|
|
@@ -469,10 +572,10 @@ async def quiz_handler(event):
|
|
|
469
572
|
async def menu_handler(event):
|
|
470
573
|
conv = event.conversation(timeout=60)
|
|
471
574
|
|
|
472
|
-
# Branching,
|
|
575
|
+
# Branching, building complex interaction flow
|
|
473
576
|
@conv.branch("main")
|
|
474
577
|
async def main_menu():
|
|
475
|
-
await conv.say("=== Main Menu ===\n1. Personal
|
|
578
|
+
await conv.say("=== Main Menu ===\n1. Personal Info\n2. Settings\n3. Exit")
|
|
476
579
|
resp = await conv.wait()
|
|
477
580
|
if resp and resp.get_text().strip() == "1":
|
|
478
581
|
await conv.goto("profile")
|
|
@@ -493,13 +596,13 @@ See [Conversation Multi-turn Dialogue](docs/en/advanced/conversation.md)
|
|
|
493
596
|
|
|
494
597
|
---
|
|
495
598
|
|
|
496
|
-
|
|
599
|
+
## Supported Platforms
|
|
497
600
|
|
|
498
|
-
We welcome
|
|
601
|
+
We welcome contributions to adapters!
|
|
499
602
|
|
|
500
603
|
| Adapter | Description |
|
|
501
|
-
|
|
502
|
-
| <img src=".github/assets/adapter_logo/kook.svg" height="20" alt="Kook" /> [Kook](https://github.com/shanfishapp/ErisPulse-KookAdapter) | Kook (
|
|
604
|
+
|---------|-------------|
|
|
605
|
+
| <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
606
|
| <img src=".github/assets/adapter_logo/matrix.svg" height="20" alt="Matrix" /> [Matrix](https://github.com/ErisPulse/ErisPulse-MatrixAdapter) | Matrix decentralized communication protocol |
|
|
504
607
|
| <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
608
|
| <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot12](https://github.com/ErisPulse/ErisPulse-OneBot12Adapter) | OneBot v12 standard protocol |
|
|
@@ -507,12 +610,12 @@ We welcome your contributions to adapters!
|
|
|
507
610
|
| <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
611
|
| <img src=".github/assets/adapter_logo/telegram.svg" height="20" alt="Telegram" /> [Telegram](https://github.com/ErisPulse/ErisPulse-TelegramAdapter) | Global instant messaging platform |
|
|
509
612
|
| <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
|
-
| <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
|
|
511
|
-
| [Yunhu User](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) |
|
|
512
|
-
| [Flower Maple
|
|
613
|
+
| <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 integration) |
|
|
614
|
+
| <img src=".github/assets/adapter_logo/yunhu.png" height="20" alt="Yunhu" /> [Yunhu User](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) | Adapter based on the Yunhu user protocol |
|
|
615
|
+
| [Flower Maple Café](https://github.com/ErisPulse/ErisPulse-Ideaura/) | Allons! \(・ω・) / |
|
|
513
616
|
| <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
617
|
| <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.
|
|
618
|
+
| <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
619
|
|
|
517
620
|
See [Adapter Details](docs/en/platform-guide/README.md)
|
|
518
621
|
|
|
@@ -524,19 +627,41 @@ See [Adapter Details](docs/en/platform-guide/README.md)
|
|
|
524
627
|
|
|
525
628
|
| Multi-platform Robot | Chat Assistant | Automation Tool | Message Forwarding |
|
|
526
629
|
|:---:|:---:|:---:|:---:|
|
|
527
|
-
| Deploy robots with the same functionality
|
|
630
|
+
| Deploy robots with the same functionality on multiple platforms | Integrate AI chat modules for entertainment and interaction | Message notifications, task management, data collection | Cross-platform message synchronization and forwarding |
|
|
528
631
|
|
|
529
632
|
</div>
|
|
530
633
|
|
|
531
634
|
---
|
|
532
635
|
|
|
533
|
-
|
|
636
|
+
## Community
|
|
637
|
+
|
|
638
|
+
Welcome to join the ErisPulse community and collaborate with developers to build the ecosystem.
|
|
639
|
+
|
|
640
|
+
### Yunhu
|
|
641
|
+
|
|
642
|
+
Group ID: `635409929`
|
|
643
|
+
|
|
644
|
+
Join the group chat:
|
|
645
|
+
|
|
646
|
+
https://yhfx.jwznb.com/share?key=VWJL4fTWXepa&ts=1781889199
|
|
647
|
+
|
|
648
|
+
### QQ Group
|
|
649
|
+
|
|
650
|
+
https://qm.qq.com/q/TOwnCmypcy
|
|
534
651
|
|
|
535
|
-
|
|
652
|
+
### Telegram
|
|
653
|
+
|
|
654
|
+
https://t.me/ErisPulse
|
|
655
|
+
|
|
656
|
+
---
|
|
657
|
+
|
|
658
|
+
### Contribution Guidelines
|
|
659
|
+
|
|
660
|
+
The health of the ErisPulse project still needs your contribution! We welcome contributions in various forms:
|
|
536
661
|
|
|
537
662
|
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** — Read [Code Style](docs/en/styleguide/) and [Contribution
|
|
663
|
+
2. **Feature Requests** — Propose new ideas via [Community Discussions](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
664
|
+
3. **Code Contributions** — Read the [Code Style](docs/en/styleguide/) and [Contribution Guidelines](CONTRIBUTING.md) before submitting PRs
|
|
540
665
|
4. **Documentation Improvements** — Help improve documentation and example code
|
|
541
666
|
|
|
542
667
|
[Join Community Discussions](https://github.com/ErisPulse/ErisPulse/discussions)
|
|
@@ -555,6 +680,14 @@ The health of the ErisPulse project still needs your contribution! We welcome va
|
|
|
555
680
|
|
|
556
681
|
<img src=".github/assets/thanks.png" width="200" alt="Thanks" />
|
|
557
682
|
|
|
558
|
-
|
|
683
|
+
Some code in this project is based on [sdkFrame](https://github.com/runoneall/sdkFrame).
|
|
559
684
|
|
|
560
|
-
|
|
685
|
+
The core adapter standardization layer refers to and benefits from the [OneBot12 specification](https://12.onebot.dev/).
|
|
686
|
+
|
|
687
|
+
Special thanks to the Yunhu ecosystem and community.
|
|
688
|
+
|
|
689
|
+
The early exploration and growth of ErisPulse would not have been possible without the support of the Yunhu developer community. Many ideas, adapters, and practical experiences originated here.
|
|
690
|
+
|
|
691
|
+
We also thank all developers and project authors who have contributed to ErisPulse, OneBot ecosystem, and the open-source community.
|
|
692
|
+
|
|
693
|
+
</div>
|