GraiaProject / Avilla

The next-gen framework for IM development. Powered by Graia Project.
MIT License
160 stars 14 forks source link

feat(onebot11): add support for market face message #167

Closed markyfsun closed 3 months ago

markyfsun commented 7 months ago

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

nullqwertyuiop commented 7 months ago

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

nullqwertyuiop commented 7 months ago

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

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

RF-Tar-Railt commented 6 months ago

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

RF-Tar-Railt commented 6 months ago

你还是没按我说的改啊

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

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

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

markyfsun commented 6 months ago

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

GreyElaina commented 6 months ago

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

罚你重看一遍。

RF-Tar-Railt commented 6 months ago

目前不同协议似乎使用了不同的字段 (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那边改了

markyfsun commented 6 months ago

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

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

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

RF-Tar-Railt commented 6 months ago

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

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

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

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

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

GreyElaina commented 6 months ago

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

markyfsun commented 6 months ago

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

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

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


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

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

nullqwertyuiop commented 6 months ago

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

Interessant...

nullqwertyuiop commented 6 months ago
实现 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

markyfsun commented 5 months ago

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

RF-Tar-Railt commented 5 months ago

经过研究后,我建议你可以把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