nonebot/nonebot2

希望打通企业微信机器人、飞书机器人的开发,将nonebot2打造成最全面的智能机器人

mrchenxxx opened this issue · 6 comments

希望打通企业微信机器人、飞书机器人的开发,将nonebot2打造成最全面的智能机器人

我个人并没有那么多时间去维护这么多协议的开发,希望能有大佬来提供支持

欢迎在 https://v2.nonebot.dev/store.html 发布协议适配

目前飞书适配器已经立项,以后就能用飞书了

已于 #425 中添加飞书适配器支持

插件作者依赖了太多基于 cqhttp 适配器本身的函数、数据结构,这是否反应出了平台的抽象程度不够

很遗憾,一个能够适配所有平台的插件接口是很难实现的,每个平台都拥有不同类型的消息,甚至有的平台只能纯文本,onebot v12 已经尽力在做平台统一了,不过类似飞书这类webhook的平台难以做到接口统一化

至少飞书和 cqhttp 更像是两个完全不相同项目的杂合

你说的没错,这就是两个完全独立的平台,不具有任何的共通性,所有的跨平台依赖事件处理函数重载机制来完成

但我认为平台可能需要对插件实现的“最小功能”做出一些约束

目前nonebot仅能做到要求适配器实现Message,甚至无法约束需要实现什么类型的消息,这是平台不统一导致的,框架的适配没你想象的那么容易,但凡你去看看那些垃圾代码以及垃圾api接口就知道了

cqhttp这边是 MessageEvent 下的 message_type: Literal["group"],这里框架并没有抽象出一个统一的区分私聊和群聊的方法

你是不会用isinstance吗?

isinstance(event, GroupMessageEvent)
isinstance(event, PrivateMessageEvent)

当前飞书无法获取到消息id,不知道 cqhttp 的情况,适配器是否需要一个方法获取id,以实现一些基于上下文的功能

能不能获取到id是飞书说了算啊,隔壁钉钉连用户信息都不给你呢,上下文功能cqhttp就有啊,飞书不是我写的我不清楚情况,你可以自行查看飞书是否支持get_session_id()进行上下文对话

还有啊,上下文对话是完全可以自定义的,你去看看update permission方法自行定义上下文,插件市场里就有人实现了,跨群、多用户的上下文插件

你发的太多了我看起来太累,建议这种问题去 https://discussions.nonebot.dev/ 不要在这里混乱别人的issue