-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Proposal] Support OpenID #113
Comments
没想明白BotSpecifier设计用于什么 现在tx没有给群列表接口所以autoselectbot确实是得寄了 |
我其实觉得所有的 target 都可以 mixin 这个进去。只要你需要指定 bot 发送就可以用到这个。 |
那是要再维护一个list存target么 |
目前 saa 中 target 的设计目标是可以直接通过 send_to(target) 将对应的消息发送到指定的目标(群或频道)中,与具体是哪个机器人发送无关。所以最开始的设计中,是不包含 bot_id 的,因为当时所有的群组信息都与机器人无关。 但是 QQ群 这个 openid 是与 bot_id 绑定的,不同机器人获取到相同群组的 openid 不同,意味着,如果你需要发送到指定 openid 里,必须使用其对应的 bot 发送,不然会发送失败。所以为了支持这种平台,只能让 target 中附带 bot_id,找到对应 openid 的机器人发送。这样可以保持 target 的语义。
现在 auto select 里已经有一个 list 了呀。
是的,所以 QQ 没法使用 auto_select 功能。
bison 的使用场景就是订阅时记录需要主动推送的 target,等有新消息之后,直接通过这个 target 发送到对应平台。不知道你这里说的没必要是什么意思? |
主动信息的场景我想到的就是在对方没有发送消息的时候主动发送,如果是这样这时list里并没有保存有对应的botid,则无法推送主动消息 QQ的被动消息时间限制是5分钟,主动消息每天限制4条 主动发送消息也需要自己构造一个target吧,那还得插件开发者自己制定bot吗? 如果是要实现开发者不关心由哪个bot发出的话,那就不应该是让target直接继承BotSpecifier
|
继承的原因不是开发者关不关心的问题,而是我上面所说的 不同机器人获取到相同群组的 openid 不同。
|
我知道这个,但是主动发送就需要构造target实例,但是构造target实例就需要botid,为开发者免去选择bot不是saa所要做的么 #124 我想的实现是这样,而不是在target上用botid区分target |
那我请问你们打算如何实现openid的auto select bot |
你可以理解为,脱离了 bot_id 的 openid 是没法唯一确定一个群的。如果遇到相同 openid 但是 bot_id 不同的情况,它们对应的群很有可能是不同的群。 |
那就直接在BOT_CACHE里存,还加个botid干嘛 |
从功能上来说: 如果直接存在 BOT_CACHE 里,那么重启就没了,之前获取到的 OpenIDTarget 就找不到这个 OpenID 到底属于哪个 bot 了,自然就发不出去了。而且 OpenID 不是 bot 之外的用户可以获取的,所以单独通过 OpenID 构造 Target 并不是设计目标。我们希望上层开发者把 Target 当作一个可序列化的黑盒,通过 extract_target() 获取,不需要用户构造(特别是 OpenID 这种场景下) |
那我大概懂了,抽空我把extract_target()完善了(要加个bot参数但是其他adapter并不需要这个参数🤔 |
现在也就QQ适配器 需要这玩意应该 |
那我就只给adapter-qq写 |
这个隔壁 PR 已经做了(指 #121 |
所以现在adapter-qq到底谁在维护(((( (其实我pr之前就做好了捏,然后我没理解你们的设计目的然后rebase掉了那个commit |
(一样样来) |
又是因为QQ因为某些平台回使用 OpenID,即 Bot 看不到真实的用户 ID 和群号,只能看到 OpenID。对于不同的 Bot,对应同一个用户的 OpenID 是不一样的。这种情况下 auto select bot 功能将直接G,原先的 paltform_target 也需要进行改变。
以上改动对于用户(下游开发者)来说应该是无感知的
The text was updated successfully, but these errors were encountered: