Adapter: nonebot-adapter-efchat
适配器名称
nonebot-adapter-efchat
适配器描述
适用于EFChat(恒五聊)聊天室的nonebot适配器
PyPI 项目名
nonebot-adapter-efchat
适配器 import 包名
nonebot.adapters.efchat
适配器项目仓库/主页链接
https://github.com/molanp/nonebot_adapter_efchat
标签
[{"label":"EFChat","color":"#ac6161"},{"label":"恒五聊","color":"#cc99ff"}]
📃 商店发布检查结果
Adapter: nonebot-adapter-efchat
✅ 所有测试通过,一切准备就绪!
详情
✅ 项目 主页 返回状态码 200。 ✅ 项目 nonebot-adapter-efchat 已发布至 PyPI。 ✅ 标签: EFChat-#ac6161, 恒五聊-#cc99ff。 ✅ 版本号: 0.1.1。 ✅ 发布时间:2025-06-16 20:23:18 CST。
历史测试
✅ 2025-06-25 15:39:30 CST ✅ 2025-06-25 15:32:05 CST ✅ 2025-06-25 15:29:08 CST ✅ 2025-06-25 15:27:14 CST ✅ 2025-06-25 15:24:21 CST ✅ 2025-06-25 15:23:19 CST ✅ 2025-06-25 15:04:31 CST ✅ 2025-06-17 16:43:56 CST
💡 如需修改信息,请直接修改 issue,机器人会自动更新检查结果。 💡 当插件加载测试失败时,请发布新版本后勾选插件测试勾选框重新运行插件测试。
♻️ 评论已更新至最新检查结果
💪 Powered by NoneFlow
发布前请先阅读一下 #2435 ,确认无误后回复一下。
这里的 tome 不正确,建议在 check to me 做判断然后写入 event 字段,不应该直接读取全局配置,会出错。 https://github.com/molanp/nonebot_adapter_efchat/blob/3b219706303f77d7c60c2a75b27e3f4cea2f92a0/src/nonebot/adapters/efchat/event.py#L28-L41
这里event的校验/后处理应该使用 pydantic validator,你可以参考其他适配器通过 from nonebot.compat import model_validator 实现。
adapter 的 startup 创建连接应该使用 self.on_ready(xxx) 。需要在启动完成后发起连接。
适配器 import 包名不对吧,应该是 nonebot.adapters.efchat ?
cc @RF-Tar-Railt
已完成规范化处理
对于网络请求,适配器不应当依赖特定的网络层框架/库(e.g. httpx)。 适配器的网络请求或 ws 连接应通过驱动器的 Request 进行。若存在所使用的驱动器无法满足平台条件的情况,[1] 条可忽略。
请注意,你的适配器强依赖了httpx和websockets。请修改
修改提示: 使用nonebot内置的driver.Request进行网络请求
完成
- https://github.com/molanp/nonebot_adapter_efchat/blob/main/src/nonebot/adapters/efchat/event.py#L22-L23 这里你应该同时写好 pyd1 和 pyd2的写法。参考 https://github.com/nonebot/adapter-milky/blob/67afc24ac0ca120ff2dd5884f36f3ddcc1afdd95/src/nonebot/adapters/milky/model/base.py#L32-L47
- 各事件的
post_type是什么?消息事件的message_type又是什么? 这些如果是不属于 EFChat 协议的东西请删掉 - 根据你 https://github.com/molanp/nonebot_adapter_efchat/blob/main/src/nonebot/adapters/efchat/adapter.py#L137 的代码,
event.self_id是你手动传入的,那么你的事件基类就不应该有self_id属性。整个适配器下你只在检查 At 自身消息段时使用了这个属性,请改为使用 bot.self_id。 - https://github.com/molanp/nonebot_adapter_efchat/blob/main/src/nonebot/adapters/efchat/adapter.py#L102 https://github.com/molanp/nonebot_adapter_efchat/blob/main/src/nonebot/adapters/efchat/adapter.py#L139-L147 https://github.com/molanp/nonebot_adapter_efchat/blob/main/src/nonebot/adapters/efchat/adapter.py#L177-L188 请注意,你这样写是未定义行为。Bot实例被创建且经过 bot_connect 后应当在会话中保持一致,而不是像你这样反复实例化新的Bot。请去参考其他适配的写法。
- https://github.com/molanp/nonebot_adapter_efchat/blob/main/src/nonebot/adapters/efchat/bot.py#L128-L129 这段代码无用。
- https://github.com/molanp/nonebot_adapter_efchat/blob/main/src/nonebot/adapters/efchat/bot.py#L82-L112 你的意思是EFChat不能进行主动消息吗?请注意,
at_sender和reply_message原则上应该只能用于bot.send中。 - 消息事件中默认值
Message("")请改掉:message应当使用model_validator(mode="before")去读取原始数据reply直接使用Nonemessage_id请使用None, 或者自行设置自增id/随机id
- https://github.com/molanp/nonebot_adapter_efchat/blob/main/src/nonebot/adapters/efchat/adapter.py#L137 你的事件解析应该使用
nonebot.compat.type_validate_python来进行。同理,你事件模型中所有的def __init__都应该删除,而是去使用model_validator(mode="before")来进行对应的数据处理。
感谢您指出问题,现已规范 应该没问题了吧(?
感谢您指出问题,现已规范 应该没问题了吧(?
isinstance(event, ChannelMessageEvent | WhisperMessageEvent)
bot.py的129行这里还得改。 A | B是py3.10以上的语法,而你的适配器最低支持版本是py3.9
已更改
6.https://github.com/molanp/nonebot_adapter_efchat/blob/main/src/nonebot/adapters/efchat/bot.py#L82-L112 你的意思是EFChat不能进行主动消息吗?请注意,at_sender 和 reply_message 原则上应该只能用于 bot.send 中。
这个是因为,经过测试,发送私聊消息(主动和被动)的确收到了服务器返回的发送成功的数据包,但是聊天中对方是看不到的
send_xxx_message你还是需要传入事件,即便只是拿事件的id整reply?我的建议是最好将这两个api整成事件无关的
当前这两个方法已脱离event依赖,请问一下async def send(方法是否也不能依赖event?
当前这两个方法已脱离event依赖,请问一下
async def send(方法是否也不能依赖event?
bot.send反而是需要依赖event的(
好的
请注意,at_sender 和 reply_message 原则上应该只能用于 bot.send 中。
这个的意思是除了bot.send以外,其余发送方法均不能携带at_sender和reply_message参数吗
好的
请注意,at_sender 和 reply_message 原则上应该只能用于 bot.send 中。
这个的意思是除了
bot.send以外,其余发送方法均不能携带at_sender和reply_message参数吗
意思是原则上通过接口直接发送消息时,应该由用户自己拼MessageSegment.at和MessageSegment.at
好的,已移除相关参数
感谢指导
@molanp 请在适配器发布后,提交 PR 补充 README 中的适配器部分,参考其他适配器填写格式。