Avilla icon indicating copy to clipboard operation
Avilla copied to clipboard

feat(onebot11): add support for market face message

Open markyfsun opened this issue 1 year ago • 15 comments

Should work with https://github.com/LLOneBot/LLOneBot/pull/205

markyfsun avatar Apr 27 '24 15:04 markyfsun

MarketFace 似乎没有在 OneBot11 标准中定义,目前不同协议似乎使用了不同的字段 (See Lagrange.OneBot/Message/Entity/MarketFaceSegment.cs#L10-L14),如果使用不同于 LLOneBot 的协议可能会导致无法正常解析

nullqwertyuiop avatar Apr 27 '24 15:04 nullqwertyuiop

除非现有的几个qq客户端传过来的信息都是llob那样子,否则我不推荐你采取llob的数据格式

~~LLOneBot 这部分的实现也是他写的,See LLOneBot/LLOneBot#205,而且现在还没 merge 进去~~

nullqwertyuiop avatar Apr 27 '24 15:04 nullqwertyuiop

要不放弃ob11协议去用新的吧(

RF-Tar-Railt avatar Apr 30 '24 06:04 RF-Tar-Railt

你还是没按我说的改啊

搞清楚一点,avilla是跨平台框架,所有模型应该是抽象的,而不是依赖于某一具体实现

商城表情并非llonebot独属的元素,mirai协议,chronocat都有这类元素

你照着llonebot写,其他协议端怎么办?

RF-Tar-Railt avatar May 24 '24 10:05 RF-Tar-Railt

MarketFace已修改idname。 序列化与反序列化的方式保持与LLOneBot一致,因为OneBot11并未规定商城表情的格式,而该PR已经合入LLOneBot。

markyfsun avatar May 25 '24 02:05 markyfsun

目前不同协议似乎使用了不同的字段 (See Lagrange.OneBot/Message/Entity/MarketFaceSegment.cs#L10-L14),如果使用不同于 LLOneBot 的协议可能会导致无法正常解析

罚你重看一遍。

GreyElaina avatar May 25 '24 03:05 GreyElaina

目前不同协议似乎使用了不同的字段 (See Lagrange.OneBot/Message/Entity/MarketFaceSegment.cs#L10-L14),如果使用不同于 LLOneBot 的协议可能会导致无法正常解析

罚你重看一遍。

https://github.com/KonataDev/Lagrange.Core/blob/master/Lagrange.OneBot%2FMessage%2FEntity%2FMarketFaceSegment.cs

就最新的来看字段仍然不一样

或者llob那边改了

RF-Tar-Railt avatar May 25 '24 03:05 RF-Tar-Railt

MarketFace已修改idname。 序列化与反序列化的方式保持与LLOneBot一致,因为OneBot11并未规定商城表情的格式,而该PR已经合入LLOneBot。

OneBot11没有规定商城表情的格式,现在商城表情各家的字段名都不一样。 我现在正在使用LLOneBot,该PR也是我提的。 由于Lagrange的签名服务器是由“外国热心网友”提供的,出于隐私安全考虑,我并没有使用该项目。

OneBot11事实上已经过时了,Avilla是希望以Lagrange作为新的OneBot11拓展标准吗?

markyfsun avatar May 25 '24 04:05 markyfsun

MarketFace已修改idname。 序列化与反序列化的方式保持与LLOneBot一致,因为OneBot11并未规定商城表情的格式,而该PR已经合入LLOneBot。

OneBot11没有规定商城表情的格式,现在商城表情各家的字段名都不一样。 我现在正在使用LLOneBot,该PR也是我提的。 由于Lagrange的签名服务器是由“外国热心网友”提供的,出于隐私安全考虑,我并没有使用该项目。

OneBot11事实上已经过时了,Avilla是希望以Lagrange作为新的OneBot11拓展标准吗?

因为avilla的ob11还就是标准的ob11,这样能够对接更多的ob协议端。

当然差异这边,llob作者说他与lagrange已经同步了这个商城表情。你可以再等一会看看是lagrange改了还是llob改了

RF-Tar-Railt avatar May 25 '24 04:05 RF-Tar-Railt

avilla 允许使用形如 avilla.onebot.llonebot 的命名空间,但 flywheel migrate还没完成。。。

GreyElaina avatar May 25 '24 05:05 GreyElaina

因为avilla的ob11还就是标准的ob11,这样能够对接更多的ob协议端。

当然差异这边,llob作者说他与lagrange已经同步了这个商城表情。你可以再等一会看看是lagrange改了还是llob改了

好的,LLOneBot修改合并后我也会更新本PR保持适配。


avilla 允许使用形如 avilla.onebot.llonebot 的命名空间,但 flywheel migrate还没完成。。。

ryanvk很有潜力,如果能补充注释和文档,或者在链路中增加日志,那么可以让新人更易上手和Debug。

markyfsun avatar May 25 '24 07:05 markyfsun

由于Lagrange的签名服务器是由“外国热心网友”提供的,出于隐私安全考虑,我并没有使用该项目。

Interessant...

nullqwertyuiop avatar May 27 '24 14:05 nullqwertyuiop

实现 emojiPackageId 对应字段名 emojiId 对应字段名 faceName 对应字段名 key 对应字段名 Reference
LLOneBot emoji_package_id emoji_id summary key Reference
Lagrange.OneBot emoji_package_id emoji_id summary key Reference
NapCatQQ emoji_package_id emoji_id summary key Reference

[!WARNING] 该表格仅展示了部分协议实现,由于 OneBot11 标准中没有编写 MarketFace 的规范,也又可能存在其他使用不同字段的协议实现。

[!NOTE] ~~Lagrange.OneBot 似乎会在未来更新相关字段。~~ Lagrange.OneBot 已更改相关字段,包括将 MarketFace 更名为 Mface

nullqwertyuiop avatar May 28 '24 08:05 nullqwertyuiop

Lagrange.OneBot的商城表情字段已更新到与LLOneBot一致,本PR无需再做适配。

markyfsun avatar May 30 '24 06:05 markyfsun

经过研究后,我建议你可以把MarketFace做成这种结构(与ob11大致一致):

@dataclass
class MarketFace(Element):
    """MarketFace对象, 专门表示 QQ 中的商城表情"""

    id: str  # alias: emoji_id
    tab_id: Optional[str] = None  # alias: package_id
    key: Optional[str] = None
    summary: Optional[str] = None  # alias: face_name

RF-Tar-Railt avatar Jun 17 '24 16:06 RF-Tar-Railt