LagrangeDev / Lagrange.Core

An Implementation of NTQQ Protocol, with Pure C#, Derived from Konata.Core
GNU General Public License v3.0
1.96k stars 238 forks source link

[Bug?]: 私聊戳自己会传递错误的target_id #525

Closed FZQ0003 closed 1 month ago

FZQ0003 commented 1 month ago

请确保您已阅读以上注意事项,并勾选下方的确认框。

Lagrange项目

OneBot

所使用/依赖的Lagrange项目对应的commit

681ceb6f8142a2e9f52162236367a43ffc82d16a

运行环境

Linux

运行架构

x64

连接方式

正向 WebSocket

重现步骤

启动Lagrange.Onebot和支持Onebot-v11的bot框架,在bot框架监听相应事件的原始数据,然后在bot私聊戳自己。

期望的结果是什么?

获取到该事件的sender_id(或user_id)与target_id相同。

实际的结果是什么?

target_id始终为bot自己的id。

简单的复现代码/链接(可选)

No response

Trace 级别日志记录(可选)

No response

补充说明(可选)

看info发现是TargetUin是对的,于是翻了下代码,发现这边的TargetId是bot的id,应该是@event.TargetUin

https://github.com/LagrangeDev/Lagrange.Core/blob/60489cb9d7657db8166f46a67769735c130e4e16/Lagrange.OneBot/Core/Notify/NotifyService.cs#L154-L165

https://github.com/LagrangeDev/Lagrange.Core/blob/60489cb9d7657db8166f46a67769735c130e4e16/Lagrange.Core/Event/EventArg/FriendPokeEvent.cs#L15-L18

除此以外SenderIdUserId看起来都是在描述发送方,是不是有点重复?

FZQ0003 commented 1 month ago

还有个问题是,我能在群里让bot戳bot自己,但没法在私聊这么干。

不过我认为原因是没指定在哪个私聊戳,传递的friend_poke只有user_id,而群组戳一戳本身就提供了group_id这样的“环境”,也许可以像群组那样增加一个参数?

_(:з」∠)_

ishkong commented 1 month ago

关于重复的问题,因为这个接口定义OB11里并没有,所以参考自gocq 他确实有重复的嫌疑,但是为了兼容一些曾经gocq时可能存在的混用问题,所以就只能让他继续重复了

关于发送一直是bot id(反正当时不是我写的.jpg,估计也没想到能自己戳自己),稍后会修改