noneplugin / nonebot-plugin-memes

Nonebot2 表情包制作插件
MIT License
216 stars 19 forks source link

优化建议 #87

Closed QuanhuZeYu closed 4 months ago

QuanhuZeYu commented 4 months ago

使用 satori适配器 | 平台QQ

有时候命令拿不到被@人信息,研究了一下源代码中的Handler方法,是直接拿TEXTS和USERINFO,文本信息没有太大问题 但是头像信息可能会有一些问题,如果不想出错可以从 state['_prefix']['command_arg'] 获取被 @人 的信息以及消息文本更为稳定

image

按照实现来说应该拿取@派蒙的头像 image

可是在代码中好像只拿了IMAGE SOURCE,这就导致拿不到被@人头像,至少在satori适配器上是这个情况,我在尝试直接修改你的源代码修复这个问题,不过我不清楚整体代码不知道会不会产生其他的问题所以先提个issue,我会把我的实现稍后展示在这个issue中

QuanhuZeYu commented 4 months ago

image 已经修改完了,顺便加了一个超过最大数量从列表最后剔除,第一次用NoneBot写得不对莫见怪 列表顺序为先@顺序放入,然后再放入ImageSource 大致更改如下,希望下个更新可以优化,另外就是除了command_arg还有MSG可以实现,它们两个似乎是一样的数据对象 image 红框是更改的地方,日志是我第一次用NoneBot,不知道怎么用看数据结构在调试

image 这一部分是增加剔除多余图像资源部分,依赖于前面的排序,先@ 后图像

image 需要在依赖注入后导入ImageUrl类,直接构造获取的头像....(我想应该userinfo类里面应该有来着,但是懒得找了)

MeetWq commented 4 months ago

处理@信息和拿头像是在 nonebot_plugin_memes/depends.py 里面实现的,拿不到@有可能是协议端的问题,你这样写完全没法跨平台

MeetWq commented 4 months ago

你用的是 chronocat 吗?如果是的话我改一下 nonebot_plugin_userinfo 就行了

QuanhuZeYu commented 4 months ago

你用的是 chronocat 吗?如果是的话我改一下 nonebot_plugin_userinfo 就行了

是的我用的是 chronocat 十分感谢了

MeetWq commented 4 months ago

更新一下 nonebot_plugin_userinfo 试试

QuanhuZeYu commented 4 months ago

Pull Request 感谢,新版的userinfo确实有用,这个pr是剔除超过图片最大数量的