酷Q c#开发框架原帖:https://cqp.cc/t/28865
这个框架貌似很久没更新了,酷Q易语言端新增的功能也没有,但是需要用到撤回功能,就得重新去修改源码,还好作者开源了源码。
源码地址:https://github.com/Flexlive/CQP
不过这款源码是1.0的,貌似没有看到1.1的源码
源码需要修改2个地方,一个是易语言端一个是c#的API端,框架默认使用UDP互相请求数据,所以只需要找到易语言端接收c#请求的地方增加一个撤回消息的API即可
c#端则增加一个发送撤回消息的UDP请求即可实现
易语言端
先打开易语言端,更换一下模块引用表,酷Q应用开发模块更换成最新的版本,即拥有撤回消息的版本我用的v9.16。
然后找到易语言源码的窗口程序集_窗口1的编辑区里面的接收数据解析子程序,最下面添加
然后易语言端保存静态编译成windows动态链接库即可,然后丢到酷Q应用的app目录下,然后修改cc.flexlive.cqeproxy.json文件,因为之前下载的框架里面是低版本的,没有撤回消息的权限,打开在最下面添加权限
撤回消息的权限是180,在auth里面添加即可,然后保存
C#端
打开c#源码,找到CQ.cs文件,然后再任意地方添加方法
public static void xtDeleteMessage(long msgid) { CQLogger.GetInstance().AddLog(String.Format("[↑][撤回消息] 消息ID:{0}", msgid)); if (ProxyType == CQProxyType.UDP) { string content = String.Format("xtDeleteMessage|{0}", msgid); CQUDPProxy.GetInstance().SendMessage(content); } else { CQAPI.deleteMsg(CQAPI.GetAuthCode(), msgid); } }
然后保存编译,放到酷Q根目录即可。
调用的时候直接可以使用
CQ.xtDeleteMessage(消息ID);//这里的消息id是酷Q端传过来的消息id按照群消息的话 public override void GroupMessage(int subType, int sendTime, long fromGroup, long fromQQ, string fromAnonymous, string msg, int font) //这里的sendTime现在已变成msgid,不再是发送时间,将sendTime传入到撤回消息的方法里面即可完成撤回 //撤回需要管理员权限!
效果图:
源码自行编译吧!
懒啊 不想动啊
不过能用新框架还是用新框架把
#2018-9-9 06:04:51
以上方法针对其他框架可能出现崩溃
我现在换成一个叫做newbe的框架,基于这个上面去调用直接崩溃,所以重新写了一个
易语言端新建一个插件项目,写入酷Q撤回消息和获取authcode的接口
然后用插件启用的时候获取authcode,保存到文件里面,然后用c#去主动调用DLL,获取authcode
然后通过查询酷Q的聊天日志数据库查询到当前这条记录的msgid,然后再去调用写的插件撤回消息DLL通过authcode和msgid即可完成,只要msgid正确都是可以成功撤回的(这里就不贴图片和代码了)
3条评论登录后可见