Adapter: nonebot-adapter-vocechat
适配器名称
nonebot-adapter-vocechat
适配器描述
Vocechat 协议适配器
PyPI 项目名
nonebot-adapter-vocechat
适配器 import 包名
nonebot.adapters.vocechat
适配器项目仓库/主页链接
https://github.com/5656565566/nonebot-adapter-vocechat
标签
[]
📃 商店发布检查结果
Adapter: nonebot-adapter-vocechat
✅ 所有测试通过,一切准备就绪!
详情
✅ 项目 主页 返回状态码 200。 ✅ 项目 nonebot-adapter-vocechat 已发布至 PyPI。 ✅ 版本号: 0.1.6。 ✅ 发布时间:2025-07-30 18:38:43 CST。
历史测试
✅ 2025-08-13 13:54:39 CST ✅ 2025-07-30 19:05:56 CST ✅ 2025-07-30 11:41:20 CST ✅ 2025-07-26 14:20:57 CST ✅ 2025-07-26 14:02:22 CST ✅ 2025-07-19 15:07:33 CST ✅ 2025-07-18 20:24:21 CST ✅ 2025-07-18 20:19:08 CST ✅ 2025-07-18 19:15:58 CST ✅ 2025-06-25 20:46:31 CST
💡 如需修改信息,请直接修改 issue,机器人会自动更新检查结果。 💡 当插件加载测试失败时,请发布新版本后勾选插件测试勾选框重新运行插件测试。
♻️ 评论已更新至最新检查结果
💪 Powered by NoneFlow
适配器依赖不应该包含 nonebot2 驱动器。适配器的 bot_connect 应该在 self.on_ready 中进行,否则 hook 无法正确执行。
此处 bot 为什么要修改 call api 逻辑?https://github.com/5656565566/nonebot-adapter-vocechat/blob/5621940c5077f7b18883ac41685089c95ef64c3c/nonebot/adapters/vocechat/bot.py#L35-L63 你应该在 adapter 中去做相应处理而不是在 bot 中,这样会影响 hook 的执行。其他调用的地方也应该对应修改。
event 类型的 name 和 type 不得为空,要么别提供默认值 https://github.com/5656565566/nonebot-adapter-vocechat/blob/5621940c5077f7b18883ac41685089c95ef64c3c/nonebot/adapters/vocechat/event.py#L13-L19
另外请阅读适配器规范 https://github.com/nonebot/nonebot2/issues/2435 对适配器代码自检
适配器依赖不应该包含 nonebot2 驱动器。适配器的 bot_connect 应该在 self.on_ready 中进行,否则 hook 无法正确执行。
此处 bot 为什么要修改 call api 逻辑?https://github.com/5656565566/nonebot-adapter-vocechat/blob/5621940c5077f7b18883ac41685089c95ef64c3c/nonebot/adapters/vocechat/bot.py#L35-L63 你应该在 adapter 中去做相应处理而不是在 bot 中,这样会影响 hook 的执行。其他调用的地方也应该对应修改。
event 类型的 name 和 type 不得为空,要么别提供默认值 https://github.com/5656565566/nonebot-adapter-vocechat/blob/5621940c5077f7b18883ac41685089c95ef64c3c/nonebot/adapters/vocechat/event.py#L13-L19
另外请阅读适配器规范 #2435 对适配器代码自检
已修改
我先提几点
- 你既然在
Message.extract_mentions有所谓的 mention消息段,为什么不在MessageSegment定义方法? - 你的事件消息为什么要在 get_message里调用所谓的get_detail,而不是去使用pydantic的model_validator?
- 请解释所谓的消息回复事件是什么?为什么你要自己设置一个reply_id?
- 消息编辑与消息撤回应属于 notice事件而非message事件,不然你消息撤回将同样触发指令
- 为什么你的bot.send_message还需要传入事件类?作为接口你为什么不把从event上获取的属性当作参数?
我先提几点
- 你既然在
Message.extract_mentions有所谓的 mention消息段,为什么不在MessageSegment定义方法?- 你的事件消息为什么要在 get_message里调用所谓的get_detail,而不是去使用pydantic的model_validator?
- 请解释所谓的消息回复事件是什么?为什么你要自己设置一个reply_id?
- 消息编辑与消息撤回应属于 notice事件而非message事件,不然你消息撤回将同样触发指令
- 为什么你的bot.send_message还需要传入事件类?作为接口你为什么不把从event上获取的属性当作参数?
感谢指导
关于 1 2 4 点 正在进行相关的修改, 关于第 3 点,消息回复事件对应的是平台中的一个推送类型 https://doc.voce.chat/zh-cn/bot/bot-and-webhook#回复消息 我正在使用 MessageEvent 替代它并且赋值 reply 符合适配器标准 关于第 5 点,是否指的是 send_message 一般只需要从event 中提取的相关参数 比如改成
async def send_message(
self,
message: Message,
*,
from_uid: int,
target: Target,
reply: Optional[int] = None,
**kwargs: Any
) -> Any:
这种
我先提几点
- 你既然在
Message.extract_mentions有所谓的 mention消息段,为什么不在MessageSegment定义方法?- 你的事件消息为什么要在 get_message里调用所谓的get_detail,而不是去使用pydantic的model_validator?
- 请解释所谓的消息回复事件是什么?为什么你要自己设置一个reply_id?
- 消息编辑与消息撤回应属于 notice事件而非message事件,不然你消息撤回将同样触发指令
- 为什么你的bot.send_message还需要传入事件类?作为接口你为什么不把从event上获取的属性当作参数?
感谢指导
关于 1 2 4 点 正在进行相关的修改, 关于第 3 点,消息回复事件对应的是平台中的一个推送类型 https://doc.voce.chat/zh-cn/bot/bot-and-webhook#回复消息 我正在使用 MessageEvent 替代它并且赋值 reply 符合适配器标准 关于第 5 点,是否指的是 send_message 一般只需要从event 中提取的相关参数 比如改成
async def send_message( self, message: Message, *, from_uid: int, target: Target, reply: Optional[int] = None, **kwargs: Any ) -> Any:这种
对的,然后写好 docstring
我先提几点
- 你既然在
Message.extract_mentions有所谓的 mention消息段,为什么不在MessageSegment定义方法?- 你的事件消息为什么要在 get_message里调用所谓的get_detail,而不是去使用pydantic的model_validator?
- 请解释所谓的消息回复事件是什么?为什么你要自己设置一个reply_id?
- 消息编辑与消息撤回应属于 notice事件而非message事件,不然你消息撤回将同样触发指令
- 为什么你的bot.send_message还需要传入事件类?作为接口你为什么不把从event上获取的属性当作参数?
感谢指导 关于 1 2 4 点 正在进行相关的修改, 关于第 3 点,消息回复事件对应的是平台中的一个推送类型 https://doc.voce.chat/zh-cn/bot/bot-and-webhook#回复消息 我正在使用 MessageEvent 替代它并且赋值 reply 符合适配器标准 关于第 5 点,是否指的是 send_message 一般只需要从event 中提取的相关参数 比如改成 async def send_message( self, message: Message, *, from_uid: int, target: Target, reply: Optional[int] = None, **kwargs: Any ) -> Any:
这种
对的,然后写好 docstring
相关修改已完成
https://github.com/5656565566/nonebot-adapter-vocechat/blob/9138c2c82d2cdad0c7a3921e72ea7cc9849abb78/nonebot/adapters/vocechat/event.py#L93-L98 这段为什么不放在 check_at_me里
另外你的reply并没有处理。event.reply应该像其他适配器那样是一个特殊的类,包含reply_id与reply_message这种字段。赋值在 _check_reply内进行
https://github.com/5656565566/nonebot-adapter-vocechat/blob/9138c2c82d2cdad0c7a3921e72ea7cc9849abb78/nonebot/adapters/vocechat/event.py#L93-L98 这段为什么不放在 check_at_me里
另外你的reply并没有处理。event.reply应该像其他适配器那样是一个特殊的类,包含reply_id与reply_message这种字段。赋值在 _check_reply内进行
请问是把相关的判断放在 check_at_me 里面然后 is_tome 直接使用 event.to_me 判断吗?
event.reply 目前我放的是 reply_id 因为这个平台没有 api 给 bot 获取被回复的原消息 这样的话可能 reply_message 之类的只能 None ,也可以吗
https://github.com/5656565566/nonebot-adapter-vocechat/blob/9138c2c82d2cdad0c7a3921e72ea7cc9849abb78/nonebot/adapters/vocechat/event.py#L93-L98 这段为什么不放在 check_at_me里
另外你的reply并没有处理。event.reply应该像其他适配器那样是一个特殊的类,包含reply_id与reply_message这种字段。赋值在 _check_reply内进行
请问是把相关的判断放在 check_at_me 里面然后 is_tome 直接使用 event.to_me 判断吗?
event.reply 目前我放的是 reply_id 因为这个平台没有 api 给 bot 获取被回复的原消息 这样的话可能 reply_message 之类的只能 None ,也可以吗
第一点是对的
第二点你可以尝试自己维护一个缓存存id对message的
https://github.com/5656565566/nonebot-adapter-vocechat/blob/9138c2c82d2cdad0c7a3921e72ea7cc9849abb78/nonebot/adapters/vocechat/event.py#L93-L98 这段为什么不放在 check_at_me里 另外你的reply并没有处理。event.reply应该像其他适配器那样是一个特殊的类,包含reply_id与reply_message这种字段。赋值在 _check_reply内进行
请问是把相关的判断放在 check_at_me 里面然后 is_tome 直接使用 event.to_me 判断吗? event.reply 目前我放的是 reply_id 因为这个平台没有 api 给 bot 获取被回复的原消息 这样的话可能 reply_message 之类的只能 None ,也可以吗
第一点是对的
第二点你可以尝试自己维护一个缓存存id对message的
关于 to_me 的修改已经完成 新增reply类型目前功能上已经完成 但是这个平台的 reply 并不是消息段,而是一个和新消息不同的 Webhook 推送 在 _parse_event 解析 好于新增一个 check_reply (那只能使用一个临时的字段 或 一个无法真正发送的 reply 消息段) 不新增一个 _check_reply 是否是可以容忍的?
@5656565566 请在适配器发布完成后 PR 更新 README 中的适配器部分,参考已有适配器格式填写 仓库 协议 注释等信息