雪語
3622504021
fix: retry failed due to a mismatch in the msg.id data type of a WeChat Official Account ( #4292 )
...
问题描述:
- 控制台显示正常发送消息,但公众号未收到
- 处理时间 > 5秒的消息几乎总是失败(如 AI 图片生成)
- 短消息(<5秒)正常工作
根本原因:
msg.id 是整数类型,但字典 key 使用字符串类型,导致类型不匹配。
检查时整数无法匹配字符串 key,导致每次都创建新的 future,
微信重试时无法重用,最终导致响应失败。
修复内容:
将 msg.id 转换为字符串后再检查字典
if str(msg.id) in self.wexin_event_workers:
影响范围:
- 修复了微信重试时无法正确重用 future 的问题
- AI 图片生成、长文本生成等耗时操作现在可以正常工作
- 仅影响微信公众号适配器,其他平台不受影响
Fixes #1679
2026-01-02 22:16:04 +08:00
akuuma
4f15102e79
perf(satori): increase websocket max message size to 10MB ( #4238 )
...
* perf(satori): increase websocket max message size to 10MB
Add max_size parameter to websocket connection to handle larger messages
and prevent connection drops when receiving large payloads from Satori platform.
* chore: ruff format
---------
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
2025-12-29 23:59:55 +08:00
Soulter
fc61f7ad32
fix: unique session config cannot be applied in non-default astrbot config ( #4232 )
...
* fix: unique session config cannot be applied in non-default astrbot config
fixes : #4195
* perf: sesison id
2025-12-28 15:01:43 +08:00
Soulter
f0fff68947
fix: at sender users not working in dingtalk ( #4219 )
...
fixes : #4218
2025-12-27 11:26:39 +08:00
Venus Yan
d853bfde84
perf: handle unsupported message types with logging in OneBot adapter ( #4164 )
...
* Handle unsupported message types with logging
解决else 分支中对未知消息类型毫无防御,直接索引ComponentTypes[t],导致新类型markdown类信息报错并炸掉事件管道,且对应群聊单群永久不响应插件;尝试支持markdown类型进行支持但未经过测试
* chore: ruff format
* chore: ruff format
---------
Co-authored-by: Soulter <905617992@qq.com >
2025-12-23 21:31:32 +08:00
Soulter
8a0f865af1
feat: enhance tool call handling and agent stats tracking and UI integration for tool calls render ( #4101 )
...
* feat: enhance tool call handling and UI integration for tool calls render
- Added support for tool call messages in the agent runner and webchat event handling.
- Implemented JSON message component for structured tool call data.
- Updated chat route to save tool call information in message history.
- Enhanced frontend to display tool call details in a collapsible format, including status and results.
- Introduced elapsed time tracking for ongoing tool calls in the chat interface.
* fix: improve message handling in agent run utility and tool loop runner
- Refactored message sending logic in `astr_agent_run_util.py` to use `msg_chain` directly for better clarity.
- Added a check in `tool_loop_agent_runner.py` to ensure `tool_call_result_blocks` is not empty before yielding the last tool call result, preventing potential errors.
* refactor: enhance message structure and UI for chat components
- Updated message handling in `MessageList.vue` to support structured message parts, including plain text, images, audio, and files.
- Improved the `Chat.vue` component styles for better visual consistency.
- Refactored message parsing logic in `useMessages.ts` to accommodate new message formats and ensure proper rendering of embedded content.
- Removed deprecated tool call handling from the message structure, streamlining the message display process.
* chore: ruff format
* feat: implement agent statistics tracking and display in chat
- Added `AgentStats` and `TokenUsage` data classes to track agent performance metrics.
- Enhanced `ToolLoopAgentRunner` to collect and update agent statistics during execution.
- Integrated agent statistics sending to webchat for real-time updates.
- Updated chat route to save and display agent statistics in message history.
- Improved frontend components to visualize agent statistics, including token usage and duration metrics.
* fix: improve message handling in Telegram event and agent run utility
- Updated message sending logic in `astr_agent_run_util.py` to send the correct message chain for tool calls.
- Enhanced `tg_event.py` to edit messages during streaming breaks, improving message management and user experience.
- Added error handling for message editing failures to ensure robustness.
* chore: ruff format
2025-12-18 17:11:09 +08:00
Soulter
16df64c405
fix: lark domain and log_level of Lark API client ( #4038 )
...
fixes : #4035
2025-12-14 21:31:17 +08:00
Soulter
8a0b7717cc
feat: supports webhook mode for Lark platform ( #4016 )
...
* feat: add Lark platform support with unified webhook configuration
* fix: update token verification logic in LarkWebhookServer
* feat: implement event deduplication and cleanup for Lark webhook events
2025-12-12 22:12:13 +08:00
Soulter
ec408a2aff
fix: lark message timestamp
2025-12-11 18:20:50 +08:00
Dt8333
f624971613
chore: fix bunches of type checking errors ( #3213 )
...
* chore(core.utils): 🚨 修正错误Lint
* chore(core.provider): 🚨 修复基类错误Lint
* chore(core.utils): 补全session_get()的重载
* chore(core.provider): 🚨 修正实现错误Lint
* chore(core.platform): 🚨 修正platform基类和webchat的错误Lint
* chore(core.platform): 修正错误实现Lint
* fix(core.provider): 修复循环调用和错误assert
* chore(core.platform): 修复部分实现Lint
* chore(core.provider): 补充Dify.text_chat_stream的参数类型
* chore(core.pipeline): 🚨 修复错误Lint
* fix(core.slack): 补充遗漏导入
* chore(core.utils): 修复错误的session_get声明
* chore(core.platform): 移除Lark adapter import中的wildcard
* chore(core.db): 修复声明和部分逻辑
* chore(core.db): 添加typings,使faiss参数能被正确识别。
* chore(core): 修复声明
* chore(core): 修改声明
* chore: 补充faiss声明
* chore(dashboard): 修改实现,减少报错
* chore(package): 修改部分声明与实现,减少报错
* chore(core): 添加Handler的overload,以去除部分assert同时通过类型检查
* chore(core.pipeline): 修改Pipeline Scheduler的execute,将判断属性改为判断类型,通过静态类型检查
* chore(core.config): 添加类型标注,通过类型检查
* chore(core.message): 为File._download_file添加检查,通过类型检查
* fix: 将断言改为条件判断以实现优雅关闭的容错性
* refactor: 移除 discord 客户端中的 assert,改用 if None 判断并抛出异常
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: DiscordPlatformAdapter 对 self.client.user 为 None 做日志并返回,移除断言
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 增强 Lark 相关空值/异常检查并完善日志输出
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 将断言替换为条件检查并加入日志与错误处理
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* chore: 移除LLM生成的无用注释
* refactor: 使用 File.get_file 替换下载逻辑并移除 assert,提供默认 filename
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: Slack Socket 未初始化抛出运行时异常,图片 URL 判空改为非空判断
* refactor: 将 WeChatPadProAdapter 的断言改为空值判断并添加日志
* refactor: 使用 isinstance 替代断言实现类型判断,便于静态检查
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 去除cast,直接使用字段与字典访问,修正端口解析
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 使用 match-case 重构 ProviderManager 加载并通过类型检查抛出 TypeError
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: group_name_display 时若 group 对象为空则记录错误并返回
* fix: 将 _get_current_persona_id 的 assert 替换成 if guard 并返回 None
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 优化插件目录存在性检查及图片URL非空验证,更新JSON排序配置
* fix: 将 datetime_str 的 assert 替换为显式检查并抛出异常
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 移除 cast,改为运行时检查并在找不到调度器时跳过
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 移除 cast,改用 isinstance 检查 FaissVecDB 并警告
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 删除 typing.cast 导入,并在获取文件绝对路径前校验 file_
* refactor: 移除 typing.cast,简化内容安全检查调用
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 将 PlatformMetadata.id 设为必填并在注册时传入 id,移除 cast
* refactor: 移除 cast,改用 HasInitialize 与 isinstance 进行初始化
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 为 ProviderManager.initialize 增加ID类型判断,避免 None 导致 get 失败
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 为 OTTSProvider 与 AzureNativeProvider 引入 _client 与 client 属性改进上下文管理
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 为 Whisper 自托管源添加模型未初始化校验并直接调用 transcribe
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 移除未使用的 cast 导入并简化 platform_name 赋值
* refactor: 引入 cast 并对 id 使用 cast(str, ...) 提升类型安全
* fix: 将 _id_to_sid 返回改为 str,空值返回空串;对 id 与 message_id 使用 cast
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 重构 Discord 处理逻辑:强制 类型转换、优先斜杠指令并优化提及判断
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 统一对 id 获取执行 cast,并在微信消息解析失败时抛错
* Revert "fix: 去除cast,直接使用字段与字典访问,修正端口解析"
This reverts commit 1cbfdf9d1b .
* fix: 百炼 Rerank 会话关闭时返回空结果;初始化 request.prompt 避免空值拼接
* fix: 统一处理搜索结果链接为字符串,新增 _get_url 助手并适配 Bing/Sogo
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 调整 call_handler 泛型、Discord 通道注解及 FishAudioTTS API 请求类型
* refactor: 使用 col(...) 替代列引用并对结果进行 CursorResult 强转
* chore: ruff format
---------
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
Co-authored-by: Soulter <905617992@qq.com >
2025-12-09 14:13:47 +08:00
Oscar Shaw
5d856900ef
perf: some UI/UX fixes, change Console to Platform Logs ( #3873 )
...
* refactor: 统一‘平台日志’文案
* perf: 优化自动滚动开关键操作逻辑
* perf: add tooltips to save and code editor buttons
2025-12-05 16:02:20 +08:00
Soulter
54e49b997b
feat: enhance platform management with status tracking and error handling
...
- Introduced PlatformStatus enum to manage platform states (pending, running, error, stopped).
- Added error recording and retrieval functionality in the Platform class.
- Implemented a new method in PlatformManager to gather statistics for all platforms.
- Updated the dashboard to display platform statuses and error details, including a dialog for error insights.
- Enhanced localization for runtime statuses and error dialogs in both English and Chinese.
2025-12-03 16:48:57 +08:00
Soulter
5714944eef
feat: unified platform webhook url ( #3889 )
...
* feat: unified platform webhook url
* chore: ruff format
* fix: 修复 Telegram 语音使用 Whisper API 报错 (#3884 )
* Update whisper_api_source.py
* chore: ruff format
---------
Co-authored-by: Soulter <905617992@qq.com >
* Update astrbot/dashboard/routes/platform.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* chore: ruff format
* fix: update webhook dialog descriptions for clarity in English and Chinese locales
* fix: update webhook URL paths to include '/api' prefix for consistency across the application
---------
Co-authored-by: 易推倒白毛 <zhaixingbi@gmail.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-12-03 15:44:52 +08:00
Soulter
defc46b6c9
fix: remove unnecessary blocks in Slack reply message ( #3897 )
2025-12-03 13:59:41 +08:00
Soulter
4d819546b0
fix: handle message sending in QQOfficialMessageEvent class ( #3894 )
...
- Added a fallback to the `_post_send` method without parameters when the stream payload is not set, ensuring proper message handling in all scenarios.
fixes : #3893
2025-12-03 13:15:12 +08:00
Soulter
f7a716af43
refactor: message storage format of webchat, support reply and file message segment ( #3845 )
...
* refactor: message storage format of webchat
* refactor: update image and record handling in webchat event processing
* fix: thinking placeholder in webchat
* feat: supports file upload in webchat
* feat: supports to delete attachments when webchat session is deleted
* perf: improve performance of file downloading
* refactor: remove unused import in chat route
* feat: add message timestamp formatting and localization support in chat
* fix: handle missing filename in file upload for chat route
* feat: enhance file handling in chat and webchat, supporting video uploads and improved attachment management
* fix: update property name for embedded files in message handling
* fix: compute variable errors after uninstalling plugins
* feat: supported for reply message and standarlize the message param
* fix: ensure message actions are displayed for the last message in the list
2025-12-02 17:11:08 +08:00
Soulter
2ba0460f19
feat: introduce file extract capability ( #3870 )
...
* feat: introduce file extract capability
powered by MoonshotAI
* fix: correct indentation in default configuration file
* fix: add error handling for file extract application in InternalAgentSubStage
* fix: update file name handling in InternalAgentSubStage to correctly associate file names with extracted content
* feat: add condition settings for local agent runner in default configuration
* fix: enhance file naming logic in File component and update prompt handling in InternalAgentSubStage
2025-12-01 18:12:39 +08:00
雪語
0e034f0fbd
fix: aiocqhttp 适配器 NapCat 文件名获取为空 ( #3853 )
...
* aiocqhttp 适配器 NapCat 文件名获取为空
修复使用 NapCat 时,文件消息的 File.name 为空的问题。原代码硬编码 name="",导致下游插件无法获取文件名和扩展名
* Enhance file name retrieval from message data
Updated file name extraction logic to check multiple fields for better accuracy.
2025-12-01 13:36:19 +08:00
Dt8333
a130db5cf4
fix: 将 Graceful shutdown 的异常改为 KeyboardInterrupt ( #3855 )
2025-11-30 20:31:17 +08:00
Dt8333
8488c9aeab
fix(core.platform): 修复启用多个企业微信智能机器人适配器时消息混乱的问题 ( #3693 )
...
* fix(core.platform): 修复启用多个企业微信智能机器人适配器时消息混乱的问题
移除了全局的消息队列,改为每个适配器处理自己的队列。修改相关方法适应该更改。
#3673
* chore: apply suggestions from code review
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
---------
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2025-11-19 21:44:38 +08:00
Soulter
6849af2bad
refactor: LLM response handling with reasoning content ( #3632 )
...
* refactor: LLM response handling with reasoning content
- Added a `show_reasoning` parameter to `run_agent` to control the display of reasoning content.
- Updated `LLMResponse` to include a `reasoning_content` field for storing reasoning text.
- Modified `WebChatMessageEvent` to handle and send reasoning content in streaming responses.
- Implemented reasoning extraction in various provider sources (e.g., OpenAI, Gemini).
- Updated the chat interface to display reasoning content in a collapsible format.
- Removed the deprecated `thinking_filter` package and its associated logic.
- Updated localization files to include new reasoning-related strings.
* feat: add Groq chat completion provider and associated configurations
* Update astrbot/core/provider/sources/gemini_source.py
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
---------
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2025-11-15 18:59:17 +08:00
Dt8333
2c8470e8ac
fix(core.platform): make DingTalk user-ID compliant with UMO ( #3634 )
2025-11-15 17:31:03 +08:00
Dt8333
6ac43c600e
perf: improve streaming fallback strategy for streaming-unsupported platform ( #3547 )
...
* feat: 修改tool_loop_agent_runner,新增stream_to_general属性。
Co-authored-by: aider (openai/gemini-2.5-flash-preview) <aider@aider.chat >
* refactor: 优化text_chat_stream,直接yield完整信息
Co-authored-by: aider (openai/gemini-2.5-flash-preview) <aider@aider.chat >
* feat(core): ✨ 添加streaming_fallback选项,允许进行流式请求和非流式输出
添加了streaming_fallback配置,默认为false。在PlatformMetadata中新增字段用于标识是否支持真流式输出。在LLMRequest中添加判断是否启用Fallback。
#3431 #2793 #3014
* refactor(core): 将stream_to_general移出toolLoopAgentRunner
* refactor(core.platform): 修改metadata中的属性名称
* fix: update streaming provider settings descriptions and add conditions
* fix: update streaming configuration to use unsupported_streaming_strategy and adjust related logic
* fix: remove support_streaming_message flag from WecomAIBotAdapter registration
* fix: update hint for non-streaming platform handling in configuration
* fix(core.pipeline): Update astrbot/core/pipeline/process_stage/method/llm_request.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* fix(core.pipeline): Update astrbot/core/pipeline/process_stage/method/llm_request.py
---------
Co-authored-by: aider (openai/gemini-2.5-flash-preview) <aider@aider.chat >
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
Co-authored-by: Soulter <905617992@qq.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-11-12 18:01:20 +08:00
Soulter
6d00717655
feat: add streaming support with toggle in chat interface and adjust layout for mobile
2025-11-09 21:57:30 +08:00
Dt8333
aca5743ab6
feat: 为部分适配器添加缺失的 send_streaming 方法 ( #3545 )
...
为Wechatpadpro和discord添加缺失的方法。
2025-11-09 16:00:24 +08:00
Dt8333
c51609b261
fix: typing error ( #3267 )
...
* fix: 修复一些小错误。
修复aiocqhttp和slack中部分逻辑缺失的await。修复discord中错误的异常捕获类型。
* fix(core.platform): 修复discord适配器中错误的message_chain赋值
* fix(aiocqhttp): 更新convert_message方法的返回类型为AstrBotMessage | None
---------
Co-authored-by: Soulter <905617992@qq.com >
2025-11-03 23:38:52 +08:00
Copilot
a04993a2bb
Replace insecure random with secrets module in cryptographic contexts ( #3248 )
...
* Initial plan
* Security fixes: Replace insecure random with secrets module and improve SSL context
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
* Address code review feedback: fix POST method and add named constants
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
* Improve documentation for random number generation constants
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
* Update astrbot/core/utils/io.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update astrbot/core/platform/sources/wecom_ai_bot/WXBizJsonMsgCrypt.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update tests/test_security_fixes.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update astrbot/core/utils/io.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update astrbot/core/utils/io.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Fix: Handle path parameter in SSL fallback for download_image_by_url
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
Co-authored-by: LIghtJUNction <lightjunction.me@gmail.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-11-03 02:43:00 +08:00
Copilot
94bf3b8195
Fix incorrect type annotations and errors ( #3250 )
...
* Initial plan
* Fix type annotation errors in cmd_conf, cmd_init, and version_comparator
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
* Changes before error encountered
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
* Fix more type annotation errors: change `= None` to `| None = None`
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
* Fix final batch of type annotation errors
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
Co-authored-by: LIghtJUNction <lightjunction.me@gmail.com >
2025-11-02 17:02:56 +08:00
Copilot
e190bbeeed
Optimize string concatenation in loops: replace += with list.join() ( #3246 )
...
* Initial plan
* Fix string concatenation performance issues in loops
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
* Address code review feedback: Fix plugin list logic and add comment
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
* Improve comment clarity for at_parts accumulation
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
2025-11-02 13:00:59 +08:00
Copilot
92abc43c9d
Fix mutable default arguments in constructors and methods ( #3247 )
...
* Initial plan
* Fix mutable default arguments in constructors and methods
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: LIghtJUNction <106986785+LIghtJUNction@users.noreply.github.com >
2025-11-02 12:57:37 +08:00
LIghtJUNction
0b7fc29ac4
style: add ruff lint module of isort and pyupgrade, and some ruff check fix ( #3214 )
...
Co-authored-by: Dt8333 <25431943+Dt8333@users.noreply.github.com >
Co-authored-by: Soulter <905617992@qq.com >
2025-11-01 13:26:19 +08:00
再吃颗电池吧
2ce653caad
perf: modify the at logic in the DingTalk adapter ( #3186 )
...
* feat 初次提交
* fix: Modify the At logic in the DingTalk adapter.
* del uv.lock
* 添加at_users为空判断
* 优化钉钉at的处理逻辑,不用重复判断机器人是否is_in_at_list
* fix: refine handling of mentioned users in group messages
---------
Co-authored-by: linyiming <linyiming@example.com >
Co-authored-by: Soulter <905617992@qq.com >
2025-10-30 14:15:01 +08:00
Soulter
36ffcf3cc3
fix: typing error
2025-10-21 10:56:44 +08:00
magisk317
5e808bab65
fix(platform): prevent 'NoneType' object is not iterable in _outline_chain and set_result ( #3103 )
...
Guard against cases where message chain is None during pipeline execution. This change enhances error-resilience for logging and processing message chains.
- Updated AstrMessageEvent._outline_chain to return an empty string when input chain is None
- Updated AstrMessageEvent.set_result to ensure result.chain is always at least an empty list
This prevents TypeError when result.chain or chain is unexpectedly None, improving pipeline stability when handling external plugins or corner cases.
Co-authored-by: engine-labs-app[bot] <140088366+engine-labs-app[bot]@users.noreply.github.com>
Co-authored-by: cto-new[bot] <140088366+cto-new[bot]@users.noreply.github.com>
2025-10-19 20:16:14 +08:00
a490077
3550103e45
feat: QQ 官方机器人增加沙盒模式选项,让本地部署能跳过 IP 白名单验证 ( #3087 )
...
* QQ官方机器人增加沙箱模式选项,让本地部署能跳过IP白名单验证
* chore: ruff format
---------
Co-authored-by: 郭鹏 <gp@pp052.top >
Co-authored-by: Soulter <905617992@qq.com >
2025-10-19 20:09:08 +08:00
PaloMiku
8b0d4d4de4
feat: 优化 Misskey 适配器的通知和聊天消息处理,改进 @用户提及逻辑 ( #3075 )
2025-10-19 20:05:55 +08:00
shangxue
dc71c04b67
feat(satori): 添加对合并转发消息功能的支持 ( #3050 )
...
* Update satori_event.py
* Update satori_event.py
* Update satori_event.py
* Update satori_adapter.py
* style: format code for better readability in satori_adapter.py and satori_event.py
---------
Co-authored-by: Soulter <905617992@qq.com >
2025-10-19 20:05:03 +08:00
PaloMiku
23f13ef05f
feat:Misskey 适配器支持文件上传、投票内容感知功能和重构部分代码 ( #2986 )
...
* feat: 为 Misskey 适配器修正一些问题,添加投票信息读取支持
* feat: 增强 Misskey 平台适配器,添加随机重连延迟和通道重新订阅功能
* feat: 添加文件上传功能并优化消息发送接口,支持同时发送文件和文本
* feat: 增强文件上传功能,支持 MIME 类型检测和外部 URL 回退
* feat: 增加 Misskey 文件上传功能开关,支持配置文件上传启用与并发限制
* feat: 添加 Misskey 文件上传目标文件夹配置,支持将文件上传到指定文件夹
* feat: 优化 Misskey 平台适配器,增强文件上传和消息发送功能,支持更多可选字段
* feat: 代码优化结构与功能
* feat(misskey): 增强消息发送逻辑和工具函数
- 重构了 `misskey_event.py` 中的 `send` 方法,使用新的适配器方法 `send_by_session`,以改进消息处理(包括文件上传)。
- 添加了详细的日志记录,以提高消息发送过程的可追溯性。
- 在 `misskey_utils.py` 中引入了 `FileIDExtractor` 和 `MessagePayloadBuilder` 类,以简化文件 ID 提取和消息载荷构建。
- 在 `misskey_utils.py` 中实现了 MIME 类型检测和文件扩展名解析,以支持多种文件上传。
- 增强了 `resolve_component_url_or_path`,以更好地处理不同类型的组件上传文件。
- 在 `upload_local_with_retries` 中添加了重试逻辑,以优雅地处理不允许的文件类型。
* feat(misskey): 限制文件上传并发数,优化消息处理逻辑
* feat(misskey): ruff formatted
* feat: 大幅优化 misskey 文件上传逻辑,简化上传流程并增强可见性解析
* feat(misskey): 移除 Url上传方式,精简日志
* fix(misskey): 修复错把URL文件当本地文件上传的问题,明确处理 URL 和本地文件的方式
* fix(misskey): 修复 session_id 解析逻辑,确保与 user_cache 键格式匹配
* perf: streaming the file with a file object in FormData to reduce peak memory usage.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* style: format debug log message for local file upload in MisskeyAPI
* refactor: remove unnecessary thread executor for reading file bytes in MisskeyAPI
---------
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Soulter <905617992@qq.com >
2025-10-16 10:27:04 +08:00
shangxue
9119f7166f
feat: satori 适配器支持 video、reply 消息类型 ( #3035 )
...
* Update satori_event.py
* style: format
---------
Co-authored-by: Soulter <905617992@qq.com >
2025-10-15 10:45:35 +08:00
Soulter
80fccc90b7
feat: 支持接入企业微信智能机器人平台 ( #3034 )
...
* stage
* stage
* feat: 支持图片收发
* feat: add support for wecom_ai_bot in getPlatformIcon function
2025-10-14 23:20:56 +08:00
kterna
8bdd748aec
feat: 支持注册消息平台适配器的 logo ( #2109 )
...
* feat: 添加平台适配器 logo 支持
* 优化平台logo注册逻辑,增加缓存机制并支持并行处理
* 去除判断绝对路径
---------
Co-authored-by: Soulter <905617992@qq.com >
2025-10-02 14:36:15 +08:00
u0_ani-nya.com
5eaf03e227
perf: 对于 Telegram 群聊,将回复机器人的消息视为唤醒机器人 ( #2926 )
...
* reply as at for tg
Add handling for bot replies in group messages.
* style: type checking and ruff format
---------
Co-authored-by: Soulter <905617992@qq.com >
2025-10-01 19:04:37 +08:00
Seayon
a8437d9331
feat: 支持在 Telegram 和飞书下请求 LLM 前预表态功能 ( #2737 )
...
* ✨ feat(platform): 为 Telegram 和飞书添加消息表情回应功能
支持在收到命令时自动添加表情回应,提升用户交互体验
新增平台特异配置项,允许自定义启用状态和表情列表
* Update astrbot/core/platform/astr_message_event.py
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
* style: ruff format
* fix: 优化平台特异配置的预回应表情处理逻辑
---------
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
Co-authored-by: Soulter <905617992@qq.com >
2025-09-30 17:29:34 +08:00
Soulter
09d1f96603
fix: 修复 /alter_cmd 指令无法控制指令组、子指令组和子指令组下子指令的问题 ( #2873 )
...
* fix: revert changes in command_group.py at 782c036 to fix command group permission check
* fix: 不传递 GroupCommand handler
* perf: alter_cmd 指令支持对子指令、指令组进行配置
* chore: remove test commands and subcommands from test_group
* chore: add cache for complete command names list in CommandFilter and CommandGroupFilter
---------
Co-authored-by: Dt8333 <25431943+Dt8333@users.noreply.github.com >
Co-authored-by: Soulter <905617992@qq.com >
2025-09-26 14:16:50 +08:00
Raven95676
d10b542797
chore: format
2025-09-26 11:05:32 +08:00
Raven95676
ce4e4fb8dd
fix: add missing id field
2025-09-26 10:59:11 +08:00
shangxue
fc76665615
feat: Satori适配器引用消息无法正确识别 ( #2686 )
...
* Update PlatformPage.vue
* Update PlatformPage.vue
* Update PlatformPage.vue
* Update satori_adapter.py
* Update satori_event.py
* Update default.py
* Update satori_adapter.py
* Update satori_adapter.py
* style: format code
---------
Co-authored-by: Soulter <905617992@qq.com >
2025-09-21 21:45:35 +08:00
Soulter
3a044bb71a
fix: 修复 Telegram 下流式传输时,第一次输出的内容会被覆盖掉的问题 ( #2838 )
...
fixes : #2481
2025-09-21 21:24:47 +08:00
anka
a4b43b884a
fix: 修复aiocqhttp适配器at会获取群昵称而消息不会获取的逻辑不一致 ( #2769 )
...
* fix: 修复at会获取群昵称而消息不会获取的逻辑不一致
* style: format code
2025-09-19 13:04:51 +08:00
PaloMiku
824c0f6667
feat: 新增 Misskey 平台适配器 ( #2774 )
...
* feat: add Misskey platform adapter
* fix: 修复 Misskey 配置项的大小写问题
* feat: 添加消息链序列化功能和可见性解析逻辑
* chore: 删除损坏的 Misskey 平台适配器工具函数文件
* docs: 更新 Misskey 消息适配器设置描述信息
* feat: Misskey 单用户连续上下文对话支持
* feat: 为 Astrbot 添加 Misskey 平台适配器的 ID 配置
* feat: 重构 Misskey 平台适配器,提取通用工具函数并优化消息处理逻辑
* refactor: 清理 Misskey 平台适配器和 API 代码,移除冗余注释
* fix: 修复了使用中和使用者反馈的多个问题
* fix: 修改提及格式,确保提及在新行开始,提升帖子美观和易读性。
* feat: 添加默认可见性和本地仅限设置,优化 Misskey 平台适配器的配置
* fix: 更新 Misskey 平台适配器配置,使用前缀以防止和其他适配器未来可能的冲突问题
* chore: rename 'misskey' to 'Misskey' in config
* feat: Misskey 适配器添加聊天消息响应功能,重构接收和发送逻辑为 Websockets 处理
* fix: 增强 Misskey WebSocket 消息日志输出
* refactor: 优化 Misskey 适配器的消息处理和日志输出
* fix: 增强 Misskey WebSocket 重连接逻辑
* feat: 增强 Misskey 适配器的消息处理,支持房间消息和相关功能,重构通用函数,清理代码重复冗余
* fix: 不屏蔽唤醒前缀对默认 LLM 的唤醒
* fix: 透传所有的群聊消息事件
* fix: 修复 message_type
* perf: 实现 send_streaming 以支援流式请求
* docs(README): update README.md
* fix: super().send(message) 被忽略
* fix: 修正 session 结构
: 作为分隔符可能会导致 umo 组装出现问题
---------
Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com >
Co-authored-by: Soulter <905617992@qq.com >
2025-09-18 23:34:41 +08:00