七空幻音LOGO

七空幻音

酷Q C#框架增加撤回消息功能2018-07-12 11:22:43

酷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的编辑区里面的接收数据解析子程序,最下面添加

2018071210595841193


然后易语言端保存静态编译成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传入到撤回消息的方法里面即可完成撤回
//撤回需要管理员权限!

效果图:

2018071211175439021

源码自行编译吧!

懒啊 不想动啊

不过能用新框架还是用新框架把


#2018-9-9 06:04:51

以上方法针对其他框架可能出现崩溃

我现在换成一个叫做newbe的框架,基于这个上面去调用直接崩溃,所以重新写了一个

易语言端新建一个插件项目,写入酷Q撤回消息和获取authcode的接口

然后用插件启用的时候获取authcode,保存到文件里面,然后用c#去主动调用DLL,获取authcode

然后通过查询酷Q的聊天日志数据库查询到当前这条记录的msgid,然后再去调用写的插件撤回消息DLL通过authcode和msgid即可完成,只要msgid正确都是可以成功撤回的(这里就不贴图片和代码了)

详细图片
载入中...