AstrBot 4.2.1__tar.gz → 4.3.1__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.
- {astrbot-4.2.1 → astrbot-4.3.1}/.gitignore +3 -1
- {astrbot-4.2.1 → astrbot-4.3.1}/Dockerfile +8 -13
- {astrbot-4.2.1 → astrbot-4.3.1}/PKG-INFO +3 -3
- {astrbot-4.2.1 → astrbot-4.3.1}/README.md +1 -1
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/config/default.py +49 -10
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/__init__.py +12 -1
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/po.py +8 -4
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/sqlite.py +144 -34
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/preprocess_stage/stage.py +24 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/result_decorate/stage.py +5 -1
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/astr_message_event.py +10 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/platform_metadata.py +2 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/register.py +3 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/lark/lark_event.py +16 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/telegram/tg_adapter.py +59 -23
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/telegram/tg_event.py +34 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/provider.py +1 -1
- astrbot-4.3.1/astrbot/core/provider/sources/zhipu_source.py +21 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/filter/command.py +32 -2
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/register/star_handler.py +6 -4
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/command_parser.py +1 -1
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/config.py +88 -2
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/session_management.py +37 -29
- astrbot-4.3.1/changelogs/v4.3.0.md +14 -0
- astrbot-4.3.1/changelogs/v4.3.1.md +1 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json +1 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json +1 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/PlatformPage.vue +10 -2
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/SessionManagementPage.vue +59 -32
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/alkaid/KnowledgeBase.vue +10 -1
- astrbot-4.3.1/packages/astrbot/commands/__init__.py +31 -0
- astrbot-4.3.1/packages/astrbot/commands/admin.py +76 -0
- astrbot-4.3.1/packages/astrbot/commands/alter_cmd.py +188 -0
- astrbot-4.3.1/packages/astrbot/commands/conversation.py +440 -0
- astrbot-4.3.1/packages/astrbot/commands/help.py +61 -0
- astrbot-4.3.1/packages/astrbot/commands/llm.py +20 -0
- astrbot-4.3.1/packages/astrbot/commands/persona.py +122 -0
- astrbot-4.3.1/packages/astrbot/commands/plugin.py +117 -0
- astrbot-4.3.1/packages/astrbot/commands/provider.py +201 -0
- astrbot-4.3.1/packages/astrbot/commands/setunset.py +37 -0
- astrbot-4.3.1/packages/astrbot/commands/sid.py +29 -0
- astrbot-4.3.1/packages/astrbot/commands/t2i.py +23 -0
- astrbot-4.3.1/packages/astrbot/commands/tool.py +31 -0
- astrbot-4.3.1/packages/astrbot/commands/tts.py +36 -0
- astrbot-4.3.1/packages/astrbot/main.py +350 -0
- astrbot-4.3.1/packages/astrbot/process_llm_request.py +195 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/pyproject.toml +2 -2
- {astrbot-4.2.1 → astrbot-4.3.1}/requirements.txt +2 -2
- astrbot-4.2.1/astrbot/core/provider/sources/zhipu_source.py +0 -81
- astrbot-4.2.1/packages/astrbot/main.py +0 -1478
- {astrbot-4.2.1 → astrbot-4.3.1}/.dockerignore +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/FUNDING.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/ISSUE_TEMPLATE/PLUGIN_PUBLISH.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/auto_assign.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/copilot-instructions.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/dependabot.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/workflows/auto_release.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/workflows/code-format.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/workflows/codeql.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/workflows/coverage_test.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/workflows/dashboard_ci.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/workflows/docker-image.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.github/workflows/stale.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.pre-commit-config.yaml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/.python-version +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/CODE_OF_CONDUCT.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/Dockerfile_with_node +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/LICENSE +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/README_en.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/README_ja.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/api/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/api/all.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/api/event/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/api/event/filter/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/api/message_components.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/api/platform/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/api/provider/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/api/star/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/api/util/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/cli/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/cli/__main__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/cli/commands/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/cli/commands/cmd_conf.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/cli/commands/cmd_init.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/cli/commands/cmd_plug.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/cli/commands/cmd_run.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/cli/utils/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/cli/utils/basic.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/cli/utils/plugin.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/cli/utils/version_comparator.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/agent/agent.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/agent/handoff.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/agent/hooks.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/agent/mcp_client.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/agent/response.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/agent/run_context.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/agent/runners/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/agent/runners/base.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/agent/runners/tool_loop_agent_runner.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/agent/tool.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/agent/tool_executor.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/astr_agent_context.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/astrbot_config_mgr.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/config/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/config/astrbot_config.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/conversation_mgr.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/core_lifecycle.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/migration/helper.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/migration/migra_3_to_4.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/migration/shared_preferences_v3.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/migration/sqlite_v3.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/vec_db/base.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/vec_db/faiss_impl/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/vec_db/faiss_impl/document_storage.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/db/vec_db/faiss_impl/vec_db.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/event_bus.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/file_token_service.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/initial_loader.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/log.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/message/components.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/message/message_event_result.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/persona_mgr.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/content_safety_check/stage.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/content_safety_check/strategies/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/content_safety_check/strategies/baidu_aip.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/content_safety_check/strategies/keywords.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/content_safety_check/strategies/strategy.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/context.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/context_utils.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/process_stage/method/llm_request.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/process_stage/method/star_request.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/process_stage/stage.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/rate_limit_check/stage.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/respond/stage.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/scheduler.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/session_status_check/stage.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/stage.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/waking_check/stage.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/pipeline/whitelist_check/stage.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/astrbot_message.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/manager.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/message_session.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/message_type.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/platform.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/discord/client.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/discord/components.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/discord/discord_platform_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/discord/discord_platform_event.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/lark/lark_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/misskey/misskey_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/misskey/misskey_api.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/misskey/misskey_event.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/misskey/misskey_utils.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/satori/satori_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/satori/satori_event.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/slack/client.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/slack/slack_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/slack/slack_event.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/webchat/webchat_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/webchat/webchat_event.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/webchat/webchat_queue_mgr.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/wechatpadpro/xml_data_parser.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/wecom/wecom_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/wecom/wecom_event.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/wecom/wecom_kf.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/wecom/wecom_kf_message.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/platform_message_history_mgr.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/entites.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/entities.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/func_tool_manager.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/manager.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/register.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/anthropic_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/azure_tts_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/coze_api_client.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/coze_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/dashscope_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/dashscope_tts.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/dify_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/edge_tts_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/fishaudio_tts_api_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/gemini_embedding_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/gemini_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/gemini_tts_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/gsv_selfhosted_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/gsvi_tts_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/minimax_tts_api_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/openai_embedding_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/openai_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/openai_tts_api_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/sensevoice_selfhosted_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/vllm_rerank_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/volcengine_tts.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/whisper_api_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/provider/sources/whisper_selfhosted_source.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/README.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/config.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/context.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/filter/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/filter/command_group.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/filter/custom_filter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/filter/event_message_type.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/filter/permission.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/filter/platform_adapter_type.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/filter/regex.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/register/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/register/star.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/session_llm_manager.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/session_plugin_manager.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/star.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/star_handler.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/star_manager.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/star_tools.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/star/updator.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/updator.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/astrbot_path.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/dify_api_client.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/io.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/log_pipe.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/metrics.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/path_util.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/pip_installer.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/session_lock.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/session_waiter.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/shared_preferences.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/t2i/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/t2i/local_strategy.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/t2i/network_strategy.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/t2i/renderer.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/t2i/template/astrbot_powershell.html +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/t2i/template/base.html +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/t2i/template_manager.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/tencent_record_helper.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/utils/version_comparator.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/core/zip_updator.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/auth.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/chat.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/conversation.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/file.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/log.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/persona.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/plugin.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/route.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/stat.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/static_file.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/t2i.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/tools.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/routes/update.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/astrbot/dashboard/server.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.0.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.1.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.10.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.11.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.12.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.13.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.14.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.15.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.16.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.17.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.18.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.19.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.20.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.21.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.22.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.23.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.24.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.25.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.26.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.27.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.28.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.29.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.3.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.30.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.31.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.32.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.33.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.35.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.36.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.37.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.38.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.39.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.4.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.5.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.6.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.7.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.8.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.4.9.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.0.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.1.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.10.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.11.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.12.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.13.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.14.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.15.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.16.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.17.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.18.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.19.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.2.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.20.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.21.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.22.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.23.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.24.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.25.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.26.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.27.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.3.1.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.3.2.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.3.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.4.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.5.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.6.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.7.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.8.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v3.5.9.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.0.0-beta.3.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.0.0-beta.4.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.0.0-beta.5.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.0.0.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.1.0.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.1.1.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.1.2.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.1.3.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.1.4.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.1.5.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.1.6.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.1.7.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.2.0.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/changelogs/v4.2.1.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/compose.yml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/.gitignore +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/LICENSE +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/README.md +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/env.d.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/index.html +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/public/_redirects +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/public/favicon.svg +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/App.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/astrbot_banner.png +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/astrbot_logo_mini.webp +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/platform_logos/dingtalk.svg +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/platform_logos/discord.svg +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/platform_logos/kook.png +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/platform_logos/lark.png +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/platform_logos/misskey.png +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/platform_logos/qq.png +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/platform_logos/satori.png +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/platform_logos/slack.svg +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/platform_logos/telegram.svg +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/platform_logos/vocechat.png +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/platform_logos/wechat.png +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/assets/images/platform_logos/wecom.png +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/ConfirmDialog.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/chat/Chat.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/chat/MessageList.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/chat/ProviderModelSelector.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/platform/AddNewPlatform.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/provider/AddNewProvider.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/AstrBotConfig.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/AstrBotConfigV4.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/ConsoleDisplayer.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/ExtensionCard.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/ItemCard.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/ItemCardGrid.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/KnowledgeBaseSelector.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/LanguageSwitcher.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/ListConfigItem.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/Logo.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/MigrationDialog.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/ObjectEditor.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/PersonaSelector.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/PluginSetSelector.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/ProviderSelector.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/ProxySelector.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/ReadmeDialog.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/T2ITemplateEditor.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/components/shared/WaitingForRestart.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/config.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/composables.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/loader.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/core/actions.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/core/common.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/core/header.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/core/navigation.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/core/status.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/about.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/alkaid/index.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/auth.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/chart.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/chat.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/config.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/console.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/conversation.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/dashboard.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/extension.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/migration.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/persona.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/platform.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/provider.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/session-management.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/settings.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/features/tool-use.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/messages/errors.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/messages/success.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/en-US/messages/validation.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/core/actions.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/core/common.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/core/header.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/core/navigation.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/core/status.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/about.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/auth.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/chart.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/chat.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/config.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/console.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/conversation.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/dashboard.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/extension.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/migration.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/persona.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/platform.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/provider.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/session-management.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/settings.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/features/tool-use.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/messages/errors.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/messages/success.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/locales/zh-CN/messages/validation.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/tools/index.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/translations.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/types.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/i18n/validator.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/layouts/blank/BlankLayout.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/layouts/full/FullLayout.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/layouts/full/vertical-sidebar/NavItem.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/layouts/full/vertical-sidebar/VerticalSidebar.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/layouts/full/vertical-sidebar/sidebarItem.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/main.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/plugins/confirmPlugin.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/plugins/vuetify.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/router/AuthRoutes.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/router/ChatBoxRoutes.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/router/MainRoutes.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/router/index.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/_override.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/_variables.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/components/_VButtons.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/components/_VCard.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/components/_VField.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/components/_VInput.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/components/_VNavigationDrawer.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/components/_VScrollbar.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/components/_VShadow.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/components/_VTabs.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/components/_VTextField.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/layout/_container.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/layout/_sidebar.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/pages/_dashboards.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/scss/style.scss +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/stores/auth.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/stores/common.js +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/stores/customizer.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/stores/toast.js +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/theme/DarkTheme.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/theme/LightTheme.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/types/themeTypes/ThemeType.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/types/vue3-print-nb.d.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/types/vue_tabler_icon.d.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/utils/platformUtils.js +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/utils/providerUtils.js +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/utils/toast.js +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/AboutPage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/AlkaidPage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/ChatBoxPage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/ChatPage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/ConfigPage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/ConsolePage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/ConversationPage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/ExtensionPage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/PersonaPage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/ProviderPage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/Settings.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/ToolUsePage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/alkaid/LongTermMemory.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/alkaid/Other.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/authentication/auth/LoginPage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/authentication/authForms/AuthLogin.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/dashboards/default/DefaultDashboard.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/dashboards/default/components/MemoryUsage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/dashboards/default/components/MessageStat.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/dashboards/default/components/OnlinePlatform.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/dashboards/default/components/OnlineTime.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/dashboards/default/components/PlatformStat.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/dashboards/default/components/RunningTime.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/src/views/dashboards/default/components/TotalMessage.vue +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/tsconfig.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/tsconfig.vite-config.json +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/dashboard/vite.config.ts +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/main.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/astrbot/long_term_memory.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/astrbot/metadata.yaml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/python_interpreter/main.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/python_interpreter/metadata.yaml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/python_interpreter/requirements.txt +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/python_interpreter/shared/api.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/reminder/main.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/reminder/metadata.yaml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/session_controller/main.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/session_controller/metadata.yaml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/thinking_filter/main.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/thinking_filter/metadata.yaml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/web_searcher/engines/__init__.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/web_searcher/engines/bing.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/web_searcher/engines/google.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/web_searcher/engines/sogo.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/web_searcher/main.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/packages/web_searcher/metadata.yaml +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/samples/stt_health_check.wav +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/tests/test_dashboard.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/tests/test_main.py +0 -0
- {astrbot-4.2.1 → astrbot-4.3.1}/tests/test_plugin_manager.py +0 -0
|
@@ -4,8 +4,6 @@ WORKDIR /AstrBot
|
|
|
4
4
|
COPY . /AstrBot/
|
|
5
5
|
|
|
6
6
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
7
|
-
nodejs \
|
|
8
|
-
npm \
|
|
9
7
|
gcc \
|
|
10
8
|
build-essential \
|
|
11
9
|
python3-dev \
|
|
@@ -13,23 +11,20 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
13
11
|
libssl-dev \
|
|
14
12
|
ca-certificates \
|
|
15
13
|
bash \
|
|
14
|
+
ffmpeg \
|
|
16
15
|
&& apt-get clean \
|
|
17
16
|
&& rm -rf /var/lib/apt/lists/*
|
|
18
17
|
|
|
18
|
+
RUN apt-get update && apt-get install -y curl gnupg && \
|
|
19
|
+
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \
|
|
20
|
+
apt-get install -y nodejs && \
|
|
21
|
+
rm -rf /var/lib/apt/lists/*
|
|
22
|
+
|
|
19
23
|
RUN python -m pip install uv
|
|
20
24
|
RUN uv pip install -r requirements.txt --no-cache-dir --system
|
|
21
|
-
RUN uv pip install socksio uv
|
|
22
|
-
|
|
23
|
-
# 释出 ffmpeg
|
|
24
|
-
RUN python -c "from pyffmpeg import FFmpeg; ff = FFmpeg();"
|
|
25
|
-
|
|
26
|
-
# add /root/.pyffmpeg/bin/ffmpeg to PATH, inorder to use ffmpeg
|
|
27
|
-
RUN echo 'export PATH=$PATH:/root/.pyffmpeg/bin' >> ~/.bashrc
|
|
25
|
+
RUN uv pip install socksio uv pilk --no-cache-dir --system
|
|
28
26
|
|
|
29
|
-
EXPOSE 6185
|
|
27
|
+
EXPOSE 6185
|
|
30
28
|
EXPOSE 6186
|
|
31
29
|
|
|
32
30
|
CMD [ "python", "main.py" ]
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: AstrBot
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.3.1
|
|
4
4
|
Summary: 易上手的多平台 LLM 聊天机器人及开发框架
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -25,10 +25,10 @@ Requires-Dist: docstring-parser>=0.16
|
|
|
25
25
|
Requires-Dist: faiss-cpu==1.10.0
|
|
26
26
|
Requires-Dist: filelock>=3.18.0
|
|
27
27
|
Requires-Dist: google-genai>=1.14.0
|
|
28
|
-
Requires-Dist: googlesearch-python>=1.3.0
|
|
29
28
|
Requires-Dist: lark-oapi>=1.4.15
|
|
30
29
|
Requires-Dist: lxml-html-clean>=0.4.2
|
|
31
30
|
Requires-Dist: mcp>=1.8.0
|
|
31
|
+
Requires-Dist: mi-googlesearch-python==1.3.0.post1
|
|
32
32
|
Requires-Dist: openai>=1.78.0
|
|
33
33
|
Requires-Dist: ormsgpack>=1.9.1
|
|
34
34
|
Requires-Dist: pillow>=11.2.1
|
|
@@ -246,7 +246,7 @@ pre-commit install
|
|
|
246
246
|
- [koishijs/koishi](https://github.com/koishijs/koishi) - 扩展性极强的 Bot 框架
|
|
247
247
|
- [MaiM-with-u/MaiBot](https://github.com/MaiM-with-u/MaiBot) - 注重拟人功能的 ChatBot
|
|
248
248
|
- [langbot-app/LangBot](https://github.com/langbot-app/LangBot) - 功能丰富的 Bot 平台
|
|
249
|
-
- [
|
|
249
|
+
- [KroMiose/nekro-agent](https://github.com/KroMiose/nekro-agent) - 注重 Agent 的 ChatBot
|
|
250
250
|
- [zhenxun-org/zhenxun_bot](https://github.com/zhenxun-org/zhenxun_bot) - 功能完善的 ChatBot
|
|
251
251
|
|
|
252
252
|
## ⭐ Star History
|
|
@@ -192,7 +192,7 @@ pre-commit install
|
|
|
192
192
|
- [koishijs/koishi](https://github.com/koishijs/koishi) - 扩展性极强的 Bot 框架
|
|
193
193
|
- [MaiM-with-u/MaiBot](https://github.com/MaiM-with-u/MaiBot) - 注重拟人功能的 ChatBot
|
|
194
194
|
- [langbot-app/LangBot](https://github.com/langbot-app/LangBot) - 功能丰富的 Bot 平台
|
|
195
|
-
- [
|
|
195
|
+
- [KroMiose/nekro-agent](https://github.com/KroMiose/nekro-agent) - 注重 Agent 的 ChatBot
|
|
196
196
|
- [zhenxun-org/zhenxun_bot](https://github.com/zhenxun-org/zhenxun_bot) - 功能完善的 ChatBot
|
|
197
197
|
|
|
198
198
|
## ⭐ Star History
|
|
@@ -6,7 +6,7 @@ import os
|
|
|
6
6
|
|
|
7
7
|
from astrbot.core.utils.astrbot_path import get_astrbot_data_path
|
|
8
8
|
|
|
9
|
-
VERSION = "4.
|
|
9
|
+
VERSION = "4.3.1"
|
|
10
10
|
DB_PATH = os.path.join(get_astrbot_data_path(), "data_v4.db")
|
|
11
11
|
|
|
12
12
|
# 默认配置
|
|
@@ -64,7 +64,7 @@ DEFAULT_CONFIG = {
|
|
|
64
64
|
"datetime_system_prompt": True,
|
|
65
65
|
"default_personality": "default",
|
|
66
66
|
"persona_pool": ["*"],
|
|
67
|
-
"prompt_prefix": "",
|
|
67
|
+
"prompt_prefix": "{{prompt}}",
|
|
68
68
|
"max_context_length": -1,
|
|
69
69
|
"dequeue_context_length": 1,
|
|
70
70
|
"streaming_response": False,
|
|
@@ -116,6 +116,15 @@ DEFAULT_CONFIG = {
|
|
|
116
116
|
"port": 6185,
|
|
117
117
|
},
|
|
118
118
|
"platform": [],
|
|
119
|
+
"platform_specific": {
|
|
120
|
+
# 平台特异配置:按平台分类,平台下按功能分组
|
|
121
|
+
"lark": {
|
|
122
|
+
"pre_ack_emoji": {"enable": False, "emojis": ["Typing"]},
|
|
123
|
+
},
|
|
124
|
+
"telegram": {
|
|
125
|
+
"pre_ack_emoji": {"enable": False, "emojis": ["✍️"]},
|
|
126
|
+
},
|
|
127
|
+
},
|
|
119
128
|
"wake_prefix": ["/"],
|
|
120
129
|
"log_level": "INFO",
|
|
121
130
|
"pip_install_arg": "",
|
|
@@ -1976,26 +1985,28 @@ CONFIG_METADATA_3 = {
|
|
|
1976
1985
|
"hint": "留空代表不使用。可用于不支持视觉模态的聊天模型。",
|
|
1977
1986
|
},
|
|
1978
1987
|
"provider_stt_settings.enable": {
|
|
1979
|
-
"description": "
|
|
1988
|
+
"description": "启用语音转文本",
|
|
1980
1989
|
"type": "bool",
|
|
1990
|
+
"hint": "STT 总开关。",
|
|
1981
1991
|
},
|
|
1982
1992
|
"provider_stt_settings.provider_id": {
|
|
1983
|
-
"description": "
|
|
1993
|
+
"description": "默认语音转文本模型",
|
|
1984
1994
|
"type": "string",
|
|
1985
|
-
"hint": "
|
|
1995
|
+
"hint": "用户也可使用 /provider 指令单独选择会话的 STT 模型。",
|
|
1986
1996
|
"_special": "select_provider_stt",
|
|
1987
1997
|
"condition": {
|
|
1988
1998
|
"provider_stt_settings.enable": True,
|
|
1989
1999
|
},
|
|
1990
2000
|
},
|
|
1991
2001
|
"provider_tts_settings.enable": {
|
|
1992
|
-
"description": "
|
|
2002
|
+
"description": "启用文本转语音",
|
|
1993
2003
|
"type": "bool",
|
|
2004
|
+
"hint": "TTS 总开关。当关闭时,会话启用 TTS 也不会生效。",
|
|
1994
2005
|
},
|
|
1995
2006
|
"provider_tts_settings.provider_id": {
|
|
1996
|
-
"description": "
|
|
2007
|
+
"description": "默认文本转语音模型",
|
|
1997
2008
|
"type": "string",
|
|
1998
|
-
"hint": "
|
|
2009
|
+
"hint": "用户也可使用 /provider 单独选择会话的 TTS 模型。",
|
|
1999
2010
|
"_special": "select_provider_tts",
|
|
2000
2011
|
"condition": {
|
|
2001
2012
|
"provider_tts_settings.enable": True,
|
|
@@ -2107,12 +2118,14 @@ CONFIG_METADATA_3 = {
|
|
|
2107
2118
|
"provider_settings.wake_prefix": {
|
|
2108
2119
|
"description": "LLM 聊天额外唤醒前缀 ",
|
|
2109
2120
|
"type": "string",
|
|
2121
|
+
"hint": "例子: 如果唤醒前缀为 `/`, 额外聊天唤醒前缀为 `chat`,则需要 `/chat` 才会触发 LLM 请求。默认为空。",
|
|
2110
2122
|
},
|
|
2111
2123
|
"provider_settings.prompt_prefix": {
|
|
2112
|
-
"description": "
|
|
2124
|
+
"description": "用户提示词",
|
|
2113
2125
|
"type": "string",
|
|
2126
|
+
"hint": "可使用 {{prompt}} 作为用户输入的占位符。如果不输入占位符则代表添加在用户输入的前面。",
|
|
2114
2127
|
},
|
|
2115
|
-
"
|
|
2128
|
+
"provider_tts_settings.dual_output": {
|
|
2116
2129
|
"description": "开启 TTS 时同时输出语音和文字内容",
|
|
2117
2130
|
"type": "bool",
|
|
2118
2131
|
},
|
|
@@ -2293,6 +2306,32 @@ CONFIG_METADATA_3 = {
|
|
|
2293
2306
|
"description": "用户权限不足时是否回复",
|
|
2294
2307
|
"type": "bool",
|
|
2295
2308
|
},
|
|
2309
|
+
"platform_specific.lark.pre_ack_emoji.enable": {
|
|
2310
|
+
"description": "[飞书] 启用预回应表情",
|
|
2311
|
+
"type": "bool",
|
|
2312
|
+
},
|
|
2313
|
+
"platform_specific.lark.pre_ack_emoji.emojis": {
|
|
2314
|
+
"description": "表情列表(飞书表情枚举名)",
|
|
2315
|
+
"type": "list",
|
|
2316
|
+
"items": {"type": "string"},
|
|
2317
|
+
"hint": "表情枚举名参考:https://open.feishu.cn/document/server-docs/im-v1/message-reaction/emojis-introduce",
|
|
2318
|
+
"condition": {
|
|
2319
|
+
"platform_specific.lark.pre_ack_emoji.enable": True,
|
|
2320
|
+
},
|
|
2321
|
+
},
|
|
2322
|
+
"platform_specific.telegram.pre_ack_emoji.enable": {
|
|
2323
|
+
"description": "[Telegram] 启用预回应表情",
|
|
2324
|
+
"type": "bool",
|
|
2325
|
+
},
|
|
2326
|
+
"platform_specific.telegram.pre_ack_emoji.emojis": {
|
|
2327
|
+
"description": "表情列表(Unicode)",
|
|
2328
|
+
"type": "list",
|
|
2329
|
+
"items": {"type": "string"},
|
|
2330
|
+
"hint": "Telegram 仅支持固定反应集合,参考:https://gist.github.com/Soulter/3f22c8e5f9c7e152e967e8bc28c97fc9",
|
|
2331
|
+
"condition": {
|
|
2332
|
+
"platform_specific.telegram.pre_ack_emoji.enable": True,
|
|
2333
|
+
},
|
|
2334
|
+
},
|
|
2296
2335
|
},
|
|
2297
2336
|
},
|
|
2298
2337
|
},
|
|
@@ -164,7 +164,7 @@ class BaseDatabase(abc.ABC):
|
|
|
164
164
|
self,
|
|
165
165
|
platform_id: str,
|
|
166
166
|
user_id: str,
|
|
167
|
-
content:
|
|
167
|
+
content: dict,
|
|
168
168
|
sender_id: str | None = None,
|
|
169
169
|
sender_name: str | None = None,
|
|
170
170
|
) -> None:
|
|
@@ -287,3 +287,14 @@ class BaseDatabase(abc.ABC):
|
|
|
287
287
|
# async def get_llm_messages(self, cid: str) -> list[LLMMessage]:
|
|
288
288
|
# """Get all LLM messages for a specific conversation."""
|
|
289
289
|
# ...
|
|
290
|
+
|
|
291
|
+
@abc.abstractmethod
|
|
292
|
+
async def get_session_conversations(
|
|
293
|
+
self,
|
|
294
|
+
page: int = 1,
|
|
295
|
+
page_size: int = 20,
|
|
296
|
+
search_query: str | None = None,
|
|
297
|
+
platform: str | None = None,
|
|
298
|
+
) -> tuple[list[dict], int]:
|
|
299
|
+
"""Get paginated session conversations with joined conversation and persona details, support search and platform filter."""
|
|
300
|
+
...
|
|
@@ -75,7 +75,9 @@ class Persona(SQLModel, table=True):
|
|
|
75
75
|
|
|
76
76
|
__tablename__ = "personas"
|
|
77
77
|
|
|
78
|
-
id: int = Field(
|
|
78
|
+
id: int | None = Field(
|
|
79
|
+
primary_key=True, sa_column_kwargs={"autoincrement": True}, default=None
|
|
80
|
+
)
|
|
79
81
|
persona_id: str = Field(max_length=255, nullable=False)
|
|
80
82
|
system_prompt: str = Field(sa_type=Text, nullable=False)
|
|
81
83
|
begin_dialogs: Optional[list] = Field(default=None, sa_type=JSON)
|
|
@@ -135,7 +137,9 @@ class PlatformMessageHistory(SQLModel, table=True):
|
|
|
135
137
|
|
|
136
138
|
__tablename__ = "platform_message_history"
|
|
137
139
|
|
|
138
|
-
id: int = Field(
|
|
140
|
+
id: int | None = Field(
|
|
141
|
+
primary_key=True, sa_column_kwargs={"autoincrement": True}, default=None
|
|
142
|
+
)
|
|
139
143
|
platform_id: str = Field(nullable=False)
|
|
140
144
|
user_id: str = Field(nullable=False) # An id of group, user in platform
|
|
141
145
|
sender_id: Optional[str] = Field(default=None) # ID of the sender in the platform
|
|
@@ -158,8 +162,8 @@ class Attachment(SQLModel, table=True):
|
|
|
158
162
|
|
|
159
163
|
__tablename__ = "attachments"
|
|
160
164
|
|
|
161
|
-
inner_attachment_id: int = Field(
|
|
162
|
-
primary_key=True, sa_column_kwargs={"autoincrement": True}
|
|
165
|
+
inner_attachment_id: int | None = Field(
|
|
166
|
+
primary_key=True, sa_column_kwargs={"autoincrement": True}, default=None
|
|
163
167
|
)
|
|
164
168
|
attachment_id: str = Field(
|
|
165
169
|
max_length=36,
|
|
@@ -15,10 +15,8 @@ from astrbot.core.db.po import (
|
|
|
15
15
|
SQLModel,
|
|
16
16
|
)
|
|
17
17
|
|
|
18
|
-
from
|
|
18
|
+
from sqlmodel import select, update, delete, text, func, or_, desc, col
|
|
19
19
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
20
|
-
from sqlalchemy.sql import func
|
|
21
|
-
from sqlalchemy import or_
|
|
22
20
|
|
|
23
21
|
NOT_GIVEN = T.TypeVar("NOT_GIVEN")
|
|
24
22
|
|
|
@@ -42,10 +40,10 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
42
40
|
|
|
43
41
|
async def insert_platform_stats(
|
|
44
42
|
self,
|
|
45
|
-
platform_id
|
|
46
|
-
platform_type
|
|
47
|
-
count
|
|
48
|
-
timestamp
|
|
43
|
+
platform_id,
|
|
44
|
+
platform_type,
|
|
45
|
+
count=1,
|
|
46
|
+
timestamp=None,
|
|
49
47
|
) -> None:
|
|
50
48
|
"""Insert a new platform statistic record."""
|
|
51
49
|
async with self.get_db() as session:
|
|
@@ -76,7 +74,9 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
76
74
|
async with self.get_db() as session:
|
|
77
75
|
session: AsyncSession
|
|
78
76
|
result = await session.execute(
|
|
79
|
-
select(func.count(PlatformStat.platform_id)).select_from(
|
|
77
|
+
select(func.count(col(PlatformStat.platform_id))).select_from(
|
|
78
|
+
PlatformStat
|
|
79
|
+
)
|
|
80
80
|
)
|
|
81
81
|
count = result.scalar_one_or_none()
|
|
82
82
|
return count if count is not None else 0
|
|
@@ -96,7 +96,7 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
96
96
|
"""),
|
|
97
97
|
{"start_time": start_time},
|
|
98
98
|
)
|
|
99
|
-
return result.scalars().all()
|
|
99
|
+
return list(result.scalars().all())
|
|
100
100
|
|
|
101
101
|
# ====
|
|
102
102
|
# Conversation Management
|
|
@@ -112,7 +112,7 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
112
112
|
if platform_id:
|
|
113
113
|
query = query.where(ConversationV2.platform_id == platform_id)
|
|
114
114
|
# order by
|
|
115
|
-
query = query.order_by(ConversationV2.created_at
|
|
115
|
+
query = query.order_by(desc(ConversationV2.created_at))
|
|
116
116
|
result = await session.execute(query)
|
|
117
117
|
|
|
118
118
|
return result.scalars().all()
|
|
@@ -130,7 +130,7 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
130
130
|
offset = (page - 1) * page_size
|
|
131
131
|
result = await session.execute(
|
|
132
132
|
select(ConversationV2)
|
|
133
|
-
.order_by(ConversationV2.created_at
|
|
133
|
+
.order_by(desc(ConversationV2.created_at))
|
|
134
134
|
.offset(offset)
|
|
135
135
|
.limit(page_size)
|
|
136
136
|
)
|
|
@@ -151,25 +151,25 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
151
151
|
|
|
152
152
|
if platform_ids:
|
|
153
153
|
base_query = base_query.where(
|
|
154
|
-
ConversationV2.platform_id.in_(platform_ids)
|
|
154
|
+
col(ConversationV2.platform_id).in_(platform_ids)
|
|
155
155
|
)
|
|
156
156
|
if search_query:
|
|
157
157
|
search_query = search_query.encode("unicode_escape").decode("utf-8")
|
|
158
158
|
base_query = base_query.where(
|
|
159
159
|
or_(
|
|
160
|
-
ConversationV2.title.ilike(f"%{search_query}%"),
|
|
161
|
-
ConversationV2.content.ilike(f"%{search_query}%"),
|
|
162
|
-
ConversationV2.user_id.ilike(f"%{search_query}%"),
|
|
160
|
+
col(ConversationV2.title).ilike(f"%{search_query}%"),
|
|
161
|
+
col(ConversationV2.content).ilike(f"%{search_query}%"),
|
|
162
|
+
col(ConversationV2.user_id).ilike(f"%{search_query}%"),
|
|
163
163
|
)
|
|
164
164
|
)
|
|
165
165
|
if "message_types" in kwargs and len(kwargs["message_types"]) > 0:
|
|
166
166
|
for msg_type in kwargs["message_types"]:
|
|
167
167
|
base_query = base_query.where(
|
|
168
|
-
ConversationV2.user_id.ilike(f"%:{msg_type}:%")
|
|
168
|
+
col(ConversationV2.user_id).ilike(f"%:{msg_type}:%")
|
|
169
169
|
)
|
|
170
170
|
if "platforms" in kwargs and len(kwargs["platforms"]) > 0:
|
|
171
171
|
base_query = base_query.where(
|
|
172
|
-
ConversationV2.platform_id.in_(kwargs["platforms"])
|
|
172
|
+
col(ConversationV2.platform_id).in_(kwargs["platforms"])
|
|
173
173
|
)
|
|
174
174
|
|
|
175
175
|
# Get total count matching the filters
|
|
@@ -180,7 +180,7 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
180
180
|
# Get paginated results
|
|
181
181
|
offset = (page - 1) * page_size
|
|
182
182
|
result_query = (
|
|
183
|
-
base_query.order_by(ConversationV2.created_at
|
|
183
|
+
base_query.order_by(desc(ConversationV2.created_at))
|
|
184
184
|
.offset(offset)
|
|
185
185
|
.limit(page_size)
|
|
186
186
|
)
|
|
@@ -226,7 +226,7 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
226
226
|
session: AsyncSession
|
|
227
227
|
async with session.begin():
|
|
228
228
|
query = update(ConversationV2).where(
|
|
229
|
-
ConversationV2.conversation_id == cid
|
|
229
|
+
col(ConversationV2.conversation_id) == cid
|
|
230
230
|
)
|
|
231
231
|
values = {}
|
|
232
232
|
if title is not None:
|
|
@@ -246,7 +246,9 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
246
246
|
session: AsyncSession
|
|
247
247
|
async with session.begin():
|
|
248
248
|
await session.execute(
|
|
249
|
-
delete(ConversationV2).where(
|
|
249
|
+
delete(ConversationV2).where(
|
|
250
|
+
col(ConversationV2.conversation_id) == cid
|
|
251
|
+
)
|
|
250
252
|
)
|
|
251
253
|
|
|
252
254
|
async def delete_conversations_by_user_id(self, user_id: str) -> None:
|
|
@@ -254,8 +256,115 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
254
256
|
session: AsyncSession
|
|
255
257
|
async with session.begin():
|
|
256
258
|
await session.execute(
|
|
257
|
-
delete(ConversationV2).where(ConversationV2.user_id == user_id)
|
|
259
|
+
delete(ConversationV2).where(col(ConversationV2.user_id) == user_id)
|
|
260
|
+
)
|
|
261
|
+
|
|
262
|
+
async def get_session_conversations(
|
|
263
|
+
self,
|
|
264
|
+
page=1,
|
|
265
|
+
page_size=20,
|
|
266
|
+
search_query=None,
|
|
267
|
+
platform=None,
|
|
268
|
+
) -> tuple[list[dict], int]:
|
|
269
|
+
"""Get paginated session conversations with joined conversation and persona details."""
|
|
270
|
+
async with self.get_db() as session:
|
|
271
|
+
session: AsyncSession
|
|
272
|
+
offset = (page - 1) * page_size
|
|
273
|
+
|
|
274
|
+
base_query = (
|
|
275
|
+
select(
|
|
276
|
+
col(Preference.scope_id).label("session_id"),
|
|
277
|
+
func.json_extract(Preference.value, "$.val").label(
|
|
278
|
+
"conversation_id"
|
|
279
|
+
), # type: ignore
|
|
280
|
+
col(ConversationV2.persona_id).label("persona_id"),
|
|
281
|
+
col(ConversationV2.title).label("title"),
|
|
282
|
+
col(Persona.persona_id).label("persona_name"),
|
|
283
|
+
)
|
|
284
|
+
.select_from(Preference)
|
|
285
|
+
.outerjoin(
|
|
286
|
+
ConversationV2,
|
|
287
|
+
func.json_extract(Preference.value, "$.val")
|
|
288
|
+
== ConversationV2.conversation_id,
|
|
289
|
+
)
|
|
290
|
+
.outerjoin(
|
|
291
|
+
Persona, col(ConversationV2.persona_id) == Persona.persona_id
|
|
258
292
|
)
|
|
293
|
+
.where(Preference.scope == "umo", Preference.key == "sel_conv_id")
|
|
294
|
+
)
|
|
295
|
+
|
|
296
|
+
# 搜索筛选
|
|
297
|
+
if search_query:
|
|
298
|
+
search_pattern = f"%{search_query}%"
|
|
299
|
+
base_query = base_query.where(
|
|
300
|
+
or_(
|
|
301
|
+
col(Preference.scope_id).ilike(search_pattern),
|
|
302
|
+
col(ConversationV2.title).ilike(search_pattern),
|
|
303
|
+
col(Persona.persona_id).ilike(search_pattern),
|
|
304
|
+
)
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
# 平台筛选
|
|
308
|
+
if platform:
|
|
309
|
+
platform_pattern = f"{platform}:%"
|
|
310
|
+
base_query = base_query.where(
|
|
311
|
+
col(Preference.scope_id).like(platform_pattern)
|
|
312
|
+
)
|
|
313
|
+
|
|
314
|
+
# 排序
|
|
315
|
+
base_query = base_query.order_by(Preference.scope_id)
|
|
316
|
+
|
|
317
|
+
# 分页结果
|
|
318
|
+
result_query = base_query.offset(offset).limit(page_size)
|
|
319
|
+
result = await session.execute(result_query)
|
|
320
|
+
rows = result.fetchall()
|
|
321
|
+
|
|
322
|
+
# 查询总数(应用相同的筛选条件)
|
|
323
|
+
count_base_query = (
|
|
324
|
+
select(func.count(col(Preference.scope_id)))
|
|
325
|
+
.select_from(Preference)
|
|
326
|
+
.outerjoin(
|
|
327
|
+
ConversationV2,
|
|
328
|
+
func.json_extract(Preference.value, "$.val")
|
|
329
|
+
== ConversationV2.conversation_id,
|
|
330
|
+
)
|
|
331
|
+
.outerjoin(
|
|
332
|
+
Persona, col(ConversationV2.persona_id) == Persona.persona_id
|
|
333
|
+
)
|
|
334
|
+
.where(Preference.scope == "umo", Preference.key == "sel_conv_id")
|
|
335
|
+
)
|
|
336
|
+
|
|
337
|
+
# 应用相同的搜索和平台筛选条件到计数查询
|
|
338
|
+
if search_query:
|
|
339
|
+
search_pattern = f"%{search_query}%"
|
|
340
|
+
count_base_query = count_base_query.where(
|
|
341
|
+
or_(
|
|
342
|
+
col(Preference.scope_id).ilike(search_pattern),
|
|
343
|
+
col(ConversationV2.title).ilike(search_pattern),
|
|
344
|
+
col(Persona.persona_id).ilike(search_pattern),
|
|
345
|
+
)
|
|
346
|
+
)
|
|
347
|
+
|
|
348
|
+
if platform:
|
|
349
|
+
platform_pattern = f"{platform}:%"
|
|
350
|
+
count_base_query = count_base_query.where(
|
|
351
|
+
col(Preference.scope_id).like(platform_pattern)
|
|
352
|
+
)
|
|
353
|
+
|
|
354
|
+
total_result = await session.execute(count_base_query)
|
|
355
|
+
total = total_result.scalar() or 0
|
|
356
|
+
|
|
357
|
+
sessions_data = [
|
|
358
|
+
{
|
|
359
|
+
"session_id": row.session_id,
|
|
360
|
+
"conversation_id": row.conversation_id,
|
|
361
|
+
"persona_id": row.persona_id,
|
|
362
|
+
"title": row.title,
|
|
363
|
+
"persona_name": row.persona_name,
|
|
364
|
+
}
|
|
365
|
+
for row in rows
|
|
366
|
+
]
|
|
367
|
+
return sessions_data, total
|
|
259
368
|
|
|
260
369
|
async def insert_platform_message_history(
|
|
261
370
|
self,
|
|
@@ -290,9 +399,9 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
290
399
|
cutoff_time = now - timedelta(seconds=offset_sec)
|
|
291
400
|
await session.execute(
|
|
292
401
|
delete(PlatformMessageHistory).where(
|
|
293
|
-
PlatformMessageHistory.platform_id == platform_id,
|
|
294
|
-
PlatformMessageHistory.user_id == user_id,
|
|
295
|
-
PlatformMessageHistory.created_at < cutoff_time,
|
|
402
|
+
col(PlatformMessageHistory.platform_id) == platform_id,
|
|
403
|
+
col(PlatformMessageHistory.user_id) == user_id,
|
|
404
|
+
col(PlatformMessageHistory.created_at) < cutoff_time,
|
|
296
405
|
)
|
|
297
406
|
)
|
|
298
407
|
|
|
@@ -309,7 +418,7 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
309
418
|
PlatformMessageHistory.platform_id == platform_id,
|
|
310
419
|
PlatformMessageHistory.user_id == user_id,
|
|
311
420
|
)
|
|
312
|
-
.order_by(PlatformMessageHistory.created_at
|
|
421
|
+
.order_by(desc(PlatformMessageHistory.created_at))
|
|
313
422
|
)
|
|
314
423
|
result = await session.execute(query.offset(offset).limit(page_size))
|
|
315
424
|
return result.scalars().all()
|
|
@@ -331,7 +440,7 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
331
440
|
"""Get an attachment by its ID."""
|
|
332
441
|
async with self.get_db() as session:
|
|
333
442
|
session: AsyncSession
|
|
334
|
-
query = select(Attachment).where(Attachment.
|
|
443
|
+
query = select(Attachment).where(Attachment.attachment_id == attachment_id)
|
|
335
444
|
result = await session.execute(query)
|
|
336
445
|
return result.scalar_one_or_none()
|
|
337
446
|
|
|
@@ -374,7 +483,7 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
374
483
|
async with self.get_db() as session:
|
|
375
484
|
session: AsyncSession
|
|
376
485
|
async with session.begin():
|
|
377
|
-
query = update(Persona).where(Persona.persona_id == persona_id)
|
|
486
|
+
query = update(Persona).where(col(Persona.persona_id) == persona_id)
|
|
378
487
|
values = {}
|
|
379
488
|
if system_prompt is not None:
|
|
380
489
|
values["system_prompt"] = system_prompt
|
|
@@ -394,7 +503,7 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
394
503
|
session: AsyncSession
|
|
395
504
|
async with session.begin():
|
|
396
505
|
await session.execute(
|
|
397
|
-
delete(Persona).where(Persona.persona_id == persona_id)
|
|
506
|
+
delete(Persona).where(col(Persona.persona_id) == persona_id)
|
|
398
507
|
)
|
|
399
508
|
|
|
400
509
|
async def insert_preference_or_update(self, scope, scope_id, key, value):
|
|
@@ -449,9 +558,9 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
449
558
|
async with session.begin():
|
|
450
559
|
await session.execute(
|
|
451
560
|
delete(Preference).where(
|
|
452
|
-
Preference.scope == scope,
|
|
453
|
-
Preference.scope_id == scope_id,
|
|
454
|
-
Preference.key == key,
|
|
561
|
+
col(Preference.scope) == scope,
|
|
562
|
+
col(Preference.scope_id) == scope_id,
|
|
563
|
+
col(Preference.key) == key,
|
|
455
564
|
)
|
|
456
565
|
)
|
|
457
566
|
await session.commit()
|
|
@@ -463,7 +572,8 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
463
572
|
async with session.begin():
|
|
464
573
|
await session.execute(
|
|
465
574
|
delete(Preference).where(
|
|
466
|
-
Preference.scope == scope,
|
|
575
|
+
col(Preference.scope) == scope,
|
|
576
|
+
col(Preference.scope_id) == scope_id,
|
|
467
577
|
)
|
|
468
578
|
)
|
|
469
579
|
await session.commit()
|
|
@@ -490,7 +600,7 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
490
600
|
DeprecatedPlatformStat(
|
|
491
601
|
name=data.platform_id,
|
|
492
602
|
count=data.count,
|
|
493
|
-
timestamp=data.timestamp.timestamp(),
|
|
603
|
+
timestamp=int(data.timestamp.timestamp()),
|
|
494
604
|
)
|
|
495
605
|
)
|
|
496
606
|
return deprecated_stats
|
|
@@ -548,7 +658,7 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
548
658
|
DeprecatedPlatformStat(
|
|
549
659
|
name=platform_id,
|
|
550
660
|
count=count,
|
|
551
|
-
timestamp=start_time.timestamp(),
|
|
661
|
+
timestamp=int(start_time.timestamp()),
|
|
552
662
|
)
|
|
553
663
|
)
|
|
554
664
|
return deprecated_stats
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import traceback
|
|
2
2
|
import asyncio
|
|
3
|
+
import random
|
|
3
4
|
from typing import Union, AsyncGenerator
|
|
4
5
|
from ..stage import Stage, register_stage
|
|
5
6
|
from ..context import PipelineContext
|
|
@@ -22,6 +23,26 @@ class PreProcessStage(Stage):
|
|
|
22
23
|
self, event: AstrMessageEvent
|
|
23
24
|
) -> Union[None, AsyncGenerator[None, None]]:
|
|
24
25
|
"""在处理事件之前的预处理"""
|
|
26
|
+
# 平台特异配置:platform_specific.<platform>.pre_ack_emoji
|
|
27
|
+
supported = {"telegram", "lark"}
|
|
28
|
+
platform = event.get_platform_name()
|
|
29
|
+
cfg = (
|
|
30
|
+
self.config.get("platform_specific", {})
|
|
31
|
+
.get(platform, {})
|
|
32
|
+
.get("pre_ack_emoji", {})
|
|
33
|
+
) or {}
|
|
34
|
+
emojis = cfg.get("emojis") or []
|
|
35
|
+
if (
|
|
36
|
+
cfg.get("enable", False)
|
|
37
|
+
and platform in supported
|
|
38
|
+
and emojis
|
|
39
|
+
and event.is_at_or_wake_command
|
|
40
|
+
):
|
|
41
|
+
try:
|
|
42
|
+
await event.react(random.choice(emojis))
|
|
43
|
+
except Exception as e:
|
|
44
|
+
logger.warning(f"{platform} 预回应表情发送失败: {e}")
|
|
45
|
+
|
|
25
46
|
# 路径映射
|
|
26
47
|
if mappings := self.platform_settings.get("path_mapping", []):
|
|
27
48
|
# 支持 Record,Image 消息段的路径映射。
|
|
@@ -46,6 +67,9 @@ class PreProcessStage(Stage):
|
|
|
46
67
|
ctx = self.plugin_manager.context
|
|
47
68
|
stt_provider = ctx.get_using_stt_provider(event.unified_msg_origin)
|
|
48
69
|
if not stt_provider:
|
|
70
|
+
logger.warning(
|
|
71
|
+
f"会话 {event.unified_msg_origin} 未配置语音转文本模型。"
|
|
72
|
+
)
|
|
49
73
|
return
|
|
50
74
|
message_chain = event.get_messages()
|
|
51
75
|
for idx, component in enumerate(message_chain):
|
|
@@ -183,9 +183,13 @@ class ResultDecorateStage(Stage):
|
|
|
183
183
|
if (
|
|
184
184
|
self.ctx.astrbot_config["provider_tts_settings"]["enable"]
|
|
185
185
|
and result.is_llm_result()
|
|
186
|
-
and tts_provider
|
|
187
186
|
and SessionServiceManager.should_process_tts_request(event)
|
|
188
187
|
):
|
|
188
|
+
if not tts_provider:
|
|
189
|
+
logger.warning(
|
|
190
|
+
f"会话 {event.unified_msg_origin} 未配置文本转语音模型。"
|
|
191
|
+
)
|
|
192
|
+
return
|
|
189
193
|
new_chain = []
|
|
190
194
|
for comp in result.chain:
|
|
191
195
|
if isinstance(comp, Plain) and len(comp.text) > 1:
|
|
@@ -416,6 +416,16 @@ class AstrMessageEvent(abc.ABC):
|
|
|
416
416
|
)
|
|
417
417
|
self._has_send_oper = True
|
|
418
418
|
|
|
419
|
+
async def react(self, emoji: str):
|
|
420
|
+
"""
|
|
421
|
+
对消息添加表情回应。
|
|
422
|
+
|
|
423
|
+
默认实现为发送一条包含该表情的消息。
|
|
424
|
+
注意:此实现并不一定符合所有平台的原生“表情回应”行为。
|
|
425
|
+
如需支持平台原生的消息反应功能,请在对应平台的子类中重写本方法。
|
|
426
|
+
"""
|
|
427
|
+
await self.send(MessageChain([Plain(emoji)]))
|
|
428
|
+
|
|
419
429
|
async def get_group(self, group_id: str = None, **kwargs) -> Optional[Group]:
|
|
420
430
|
"""获取一个群聊的数据, 如果不填写 group_id: 如果是私聊消息,返回 None。如果是群聊消息,返回当前群聊的数据。
|
|
421
431
|
|