Lanly109 / headimg_generator

基于HoshinoBot的制作头像相关的表情包插件,移植自nonebot-plugin-petpet
MIT License
50 stars 11 forks source link

请问如何使用回复来触发,比如回复一张图`撕`之类的 #12

Closed SaarChaffee closed 1 year ago

Lanly109 commented 2 years ago

目前暂时不能,原插件可以,但它使用的api是nonebot2才有的reply属性,可以获取被回复消息的图片;而hoshino基于的nonebot1暂时没有该属性,只能获取到被回复消息的id,没研究过能不能依此获取到被回复消息的图片。 在init.py的第53行注释就是原插件里的对被回复消息图片的处理。

SaarChaffee commented 2 years ago

目前暂时不能,原插件可以,但它使用的api是nonebot2才有的reply属性,可以获取被回复消息的图片;而hoshino基于的nonebot1暂时没有该属性,只能获取到被回复消息的id,没研究过能不能依此获取到被回复消息的图片。 在init.py的第53行注释就是原插件里的对被回复消息图片的处理。

好的明白了

kcn3388 commented 1 year ago

调整cqhttp的设置

# 为Reply附加更多信息
  extra-reply-data: true

即可获得回复的消息的文本及cq码

SaarChaffee commented 1 year ago

尝试修改设置之后,拿到的内容是

[CQ:reply,id=1894547954,seq=2408,qq=我Q号,time=1664040845,text=[图片]][CQ:at,qq=我Q号] 撕
kcn3388 commented 1 year ago

尝试修改设置之后,拿到的内容是

[CQ:reply,id=1894547954,seq=2408,qq=我Q号,time=1664040845,text=[图片]][CQ:at,qq=我Q号] 撕

text里面的图片内容转换为cq码即可

kcn3388 commented 1 year ago

目前暂时不能,原插件可以,但它使用的api是nonebot2才有的reply属性,可以获取被回复消息的图片;而hoshino基于的nonebot1暂时没有该属性,只能获取到被回复消息的id,没研究过能不能依此获取到被回复消息的图片。 在init.py的第53行注释就是原插件里的对被回复消息图片的处理。

可以的,但是当前go-cqhttp的稳定版构建存在bug,回复id获取会出问题,dev分支的最新构建已修复

Lanly109 commented 1 year ago

目前暂时不能,原插件可以,但它使用的api是nonebot2才有的reply属性,可以获取被回复消息的图片;而hoshino基于的nonebot1暂时没有该属性,只能获取到被回复消息的id,没研究过能不能依此获取到被回复消息的图片。 在init.py的第53行注释就是原插件里的对被回复消息图片的处理。

可以的,但是当前go-cqhttp的稳定版构建存在bug,回复id获取会出问题,dev分支的最新构建已修复

好,等会战结束了我研究下。

kcn3388 commented 1 year ago

好,等会战结束了我研究下。

实现方法:

bot.get_msg(msg_id)

文档

kcn3388 commented 1 year ago

finish in #18

对于一个完整的reply message,存在一个隐式调用的@cq码;同时当回复对象不是自己时,会自动补充一个显示@,对于PCQQ无法主动删除,移动端则可以手动删除@,因此一个完整的reply最多会重复两次at,因为reply中本身就存在回复对象的QQ,因此这两个@建议删除以防止读错参数

Lanly109 commented 1 year ago

finish in #18

对于一个完整的reply message,存在一个隐式调用的@cq码;同时当回复对象不是自己时,会自动补充一个显示@,对于PCQQ无法主动删除,移动端则可以手动删除@,因此一个完整的reply最多会重复两次at,因为reply中本身就存在回复对象的QQ,因此这两个@建议删除以防止读错参数

关于移动端和PC端的是不是反了?我自己测试的ios qq和mac qq,显示的at删掉的话,pc端是没有隐式at,而手机端还保留着隐式at

kcn3388 commented 1 year ago

finish in #18 对于一个完整的reply message,存在一个隐式调用的@cq码;同时当回复对象不是自己时,会自动补充一个显示@,对于PCQQ无法主动删除,移动端则可以手动删除@,因此一个完整的reply最多会重复两次at,因为reply中本身就存在回复对象的QQ,因此这两个@建议删除以防止读错参数

关于移动端和PC端的是不是反了?我自己测试的ios qq和mac qq,显示的at删掉的话,pc端是没有隐式at,而手机端还保留着隐式at

PC和AndroidQQ可以删除回复时附带的显式at,删除以后你看raw_message还是存在一个隐式的at(因为回复本身就带一个隐式at)

SaarChaffee commented 1 year ago

感谢