public static IntPtr CQ_getFriendList(int authCode, bool reserved) { string url = $@"{Save.url}v1/LuaApiCaller?qq={Save.curentQQ}&funcname=GetQQUserList"; JObject data = new JObject { { "StartIndex", "" } }; JObject ret = JsonConvert.DeserializeObject <JObject>(SendRequest(url, data.ToString())); MemoryStream streamMain = new MemoryStream(); BinaryWriter binaryWriterMain = new BinaryWriter(streamMain); JArray grouplist = JArray.Parse(ret["Friendlist"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriterMain, grouplist.Count); foreach (var item in grouplist) { MemoryStream stream = new MemoryStream(); BinaryWriter binaryWriter = new BinaryWriter(stream); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt64(item["FriendUin"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, item["NickName"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriter, item["Remark"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriterMain, (short)stream.Length); binaryWriterMain.Write(stream.ToArray()); } return(Marshal.StringToHGlobalAnsi(Convert.ToBase64String(streamMain.ToArray()))); }
public static IntPtr CQ_getGroupInfo(int authCode, long groupId, bool notCache) { string url = $@"{Save.url}v1/LuaApiCaller?qq={Save.curentQQ}&funcname=GetGroupList"; JObject data = new JObject { { "NextToken", "" } }; JObject ret = JsonConvert.DeserializeObject <JObject>(SendRequest(url, data.ToString())); JArray array = JArray.Parse(ret["TroopList"].ToString()); JToken targetgroup = null; foreach (var item in array) { if (item["GroupId"].ToString() == groupId.ToString()) { targetgroup = item; break; } } if (targetgroup == null) { return((IntPtr)0); } MemoryStream stream = new MemoryStream(); BinaryWriter binaryWriter = new BinaryWriter(stream); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt64(targetgroup["GroupId"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, targetgroup["GroupName"].ToString()); return(Marshal.StringToHGlobalAnsi(Convert.ToBase64String(stream.ToArray()))); }
public static IntPtr CQ_getGroupList(int authCode) { string url = $@"{Save.url}v1/LuaApiCaller?qq={Save.curentQQ}&funcname=GetGroupList"; JObject data = new JObject { { "NextToken", "" } }; JObject ret = JsonConvert.DeserializeObject <JObject>(SendRequest(url, data.ToString())); //获取请求之后的消息 MemoryStream streamMain = new MemoryStream(); BinaryWriter binaryWriterMain = new BinaryWriter(streamMain); //最终要进行编码的字节流 JArray grouplist = JArray.Parse(ret["TroopList"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriterMain, grouplist.Count);//群数量 foreach (var item in grouplist) { MemoryStream stream = new MemoryStream(); BinaryWriter binaryWriter = new BinaryWriter(stream);//临时字节流,用于统计每个群信息的字节数量 BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt64(item["GroupId"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, item["GroupName"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriterMain, (short)stream.Length); //将临时字节流的字节长度写入主字节流 binaryWriterMain.Write(stream.ToArray()); //写入数据 } return(Marshal.StringToHGlobalAnsi(Convert.ToBase64String(streamMain.ToArray()))); }
/// <summary> /// 群消息处理事件 /// </summary> private static void GroupMessageHandler(string fn) { Task task = new Task(() => { string msg = fn; Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); ReceiveMessage groupMessage = JsonConvert.DeserializeObject <ReceiveMessage>(msg); ReceiveMessage.Data data = groupMessage.CurrentPacket.Data; //群文件事件 if (groupMessage.CurrentPacket.Data.MsgType == "GroupFileMsg") { JObject fileupload = JObject.Parse(data.Content); MemoryStream stream = new MemoryStream(); BinaryWriter binaryWriter = new BinaryWriter(stream); BinaryWriterExpand.Write_Ex(binaryWriter, fileupload["FileID"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriter, fileupload["FileName"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt64(fileupload["FileSize"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, 0); pluginManagment.CallFunction(FunctionEnums.Functions.Upload, 1, GetTimeStamp(), data.FromGroupId, data.FromUserId, Convert.ToBase64String(stream.ToArray())); stopwatch.Stop(); LogHelper.WriteLog(LogLevel.InfoReceive, "OPQBot框架", "文件上传", $"来源群:{data.FromGroupId}({data.FromGroupName}) 来源QQ:{data.FromUserId}({data.FromNickName}) " + $"文件名:{fileupload["FileName"]} 大小:{Convert.ToDouble(fileupload["FileSize"]) / 1000}KB FileID:{fileupload["FileID"]}", $"√ {stopwatch.ElapsedMilliseconds / (double)1000:f2} s"); return; } string message = ProgressMessage.Start(groupMessage); var b = Encoding.UTF8.GetBytes(message); message = GB18030.GetString(Encoding.Convert(Encoding.UTF8, GB18030, b)); //表示自己发送出去的消息, 写入消息列表 int msgID = groupMessage.CurrentPacket.Data.MsgSeq; if (groupMessage.CurrentPacket.Data.FromUserId == Save.curentQQ && !Save.ReceiveSelfMsg) { Dll.AddMsgToSave(new Deserizition.Message(msgID, data.MsgRandom, data.MsgSeq, data.FromUin, data.FromGroupId, data.MsgTime, message, data.TempUin)); return; } int logid = LogHelper.WriteLog(LogLevel.InfoReceive, "OPQBot框架", "[↓]收到消息", $"群:{data.FromGroupId}({data.FromGroupName}) QQ:{data.FromUserId}({data.FromNickName}) {message}", "处理中..."); var c = new Deserizition.Message(msgID, data.MsgRandom, data.MsgSeq, data.FromUin, data.FromGroupId, data.MsgTime, message, data.TempUin); Dll.AddMsgToSave(c);//保存消息到消息列表 byte[] messageBytes = GB18030.GetBytes(message + "\0"); var messageIntptr = Marshal.AllocHGlobal(messageBytes.Length); Marshal.Copy(messageBytes, 0, messageIntptr, messageBytes.Length); //调用插件功能 int pluginid = pluginManagment.CallFunction(FunctionEnums.Functions.GroupMsg, 2, msgID, data.FromGroupId, data.FromUserId, "", messageIntptr, 0); Marshal.FreeHGlobal(messageIntptr); GC.Collect(); stopwatch.Stop(); string updatemsg = $"√ {stopwatch.ElapsedMilliseconds / (double)1000:f2} s"; if (pluginid > 0) { updatemsg += $"(由 {pluginManagment.Plugins[pluginid - 1].appinfo.Name} 结束消息处理)"; } LogHelper.UpdateLogStatus(logid, updatemsg); }); task.Start(); }
public static IntPtr CQ_getGroupMemberInfoV2(int authCode, long groupId, long qqId, bool isCache) { string url = $@"{Save.url}v1/LuaApiCaller?qq={Save.curentQQ}&funcname=friendlist.GetTroopMemberListReq"; JObject data = new JObject { { "GroupUin", groupId }, { "LastUin", 0 } }; JObject ret = JsonConvert.DeserializeObject <JObject>(SendRequest(url, data.ToString())); JArray array = JArray.Parse(ret["MemberList"].ToString()); JToken targetuser = null; foreach (var item in array) { if (item["MemberUin"].ToString() == qqId.ToString()) { targetuser = item; break; } } if (targetuser == null) { return((IntPtr)0); } MemoryStream stream = new MemoryStream(); BinaryWriter binaryWriter = new BinaryWriter(stream); BinaryWriterExpand.Write_Ex(binaryWriter, groupId); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt64(targetuser["MemberUin"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, targetuser["NickName"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriter, targetuser["GroupCard"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt32(targetuser["Gender"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt32(targetuser["Age"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, "unkown"); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt32(targetuser["JoinTime"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt32(targetuser["LastSpeakTime"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, $"头衔{targetuser["MemberLevel"]}级"); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt32(targetuser["GroupAdmin"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, 0); BinaryWriterExpand.Write_Ex(binaryWriter, targetuser["SpecialTitle"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriter, 2051193600); BinaryWriterExpand.Write_Ex(binaryWriter, 1); return(Marshal.StringToHGlobalAnsi(Convert.ToBase64String(stream.ToArray()))); }
public static IntPtr CQ_getGroupMemberList(int authCode, long groupId) { string url = $@"{Save.url}v1/LuaApiCaller?qq={Save.curentQQ}&funcname=friendlist.GetTroopMemberListReq"; JObject data = new JObject { { "GroupUin", 0 }, { "LastUin", 0 } }; JObject ret = JsonConvert.DeserializeObject <JObject>(SendRequest(url, data.ToString())); MemoryStream streamMain = new MemoryStream(); BinaryWriter binaryWriterMain = new BinaryWriter(streamMain); JArray memberls = JArray.Parse(ret["MemberList"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriterMain, memberls.Count); foreach (var item in memberls) { MemoryStream stream = new MemoryStream(); BinaryWriter binaryWriter = new BinaryWriter(stream); BinaryWriterExpand.Write_Ex(binaryWriter, groupId); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt64(item["MemberUin"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, item["NickName"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriter, item["GroupCard"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt32(item["Gender"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt32(item["Age"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, "unkown"); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt32(item["JoinTime"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt32(item["LastSpeakTime"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, $"头衔{item["MemberLevel"]}级"); BinaryWriterExpand.Write_Ex(binaryWriter, Convert.ToInt32(item["GroupAdmin"].ToString())); BinaryWriterExpand.Write_Ex(binaryWriter, 0); BinaryWriterExpand.Write_Ex(binaryWriter, item["SpecialTitle"].ToString()); BinaryWriterExpand.Write_Ex(binaryWriter, 2051193600); BinaryWriterExpand.Write_Ex(binaryWriter, 1); BinaryWriterExpand.Write_Ex(binaryWriterMain, (short)stream.Length); binaryWriterMain.Write(stream.ToArray()); } return(Marshal.StringToHGlobalAnsi(Convert.ToBase64String(streamMain.ToArray()))); }