예제 #1
0
        public static string SendMessage(uint uin, string content, Font font, Color color, string clientid, string pessionid)
        {
            StringBuilder sb = new StringBuilder(400);

            sb.Append("r={\"to\":");
            sb.Append(uin);
            sb.AppendFormat(",\"face\":{0},", 606);
            sb.AppendFormat("\"content\":\"[\\\"{0}\\\",", Encode.ToUnicodeString(content, true));
            sb.Append("[\\\"font\\\",");
            sb.Append("{\\\"name\\\":");
            sb.AppendFormat("\\\"{0}\\\",", Encode.ToUnicodeString(font.Name, true));
            sb.AppendFormat("\\\"size\\\":");
            sb.AppendFormat("\\\"{0}\\\",", font.Size);
            sb.AppendFormat("\\\"style\\\":");
            sb.AppendFormat("[{0}],", Tool.GetFontStyle(font));
            sb.Append("\\\"color\\\":\\\"");
            sb.Append(Tool.GetColor(color));
            sb.Append("\\\"}]]\",");
            sb.Append("\"msg_id\":");
            sb.AppendFormat("{0},", Tool.GetRandomNumber(8));
            sb.Append("\"clientid\":");
            sb.AppendFormat("\"{0}\",", clientid);
            sb.Append("\"psessionid\":");
            sb.AppendFormat("\"{0}\"", pessionid);
            sb.Append("}&clientid=");
            sb.Append(clientid);
            sb.AppendFormat("&psessionid={0}", pessionid);
            return(HttpUtility.UrlDecode(sb.ToString()));
        }
예제 #2
0
        private static KickMessage GetKiMessage(string[] array, int index)
        {
            string      item  = string.Empty;
            KickMessage value = new KickMessage();

            for (int i = index; i < array.Length; i++)
            {
                item = array[i];
                string[] a = item.Split(':');
                if (a.Length > 1)
                {
                    switch (a[0])
                    {
                    case "value":
                        value.Way = a[2];
                        break;

                    case "show_reason":
                        value.ShowReason = int.Parse(a[1]);
                        break;

                    case "reason":
                        value.Reason = Encode.DeUnicode(a[1]);
                        break;

                    default:
                        break;
                    }
                }
            }
            return(value);
        }
예제 #3
0
파일: WebQQ.cs 프로젝트: crcruicai/Library
        /// <summary>
        /// 使用条件查找群.
        /// </summary>
        /// <param name="key">关键词.</param>
        /// <returns></returns>
        public string SearchGroupByKey(string key)
        {
            StringBuilder sb = new StringBuilder(150);

            sb.Append("http://cgi.web2.qq.com/keycgi/qqweb/group/search.do?pg=1&perpage=10&all=");
            sb.Append(Encode.ToUnicodeString(key));
            sb.AppendFormat("&c1=0&c2=0&c3=0&st=0&vfcode=&type=1&vfwebqq={0}&t={1}",
                            _VFWebQQ, Tool.GetRandomNumber(10));
            _HttpWeb.Referer = "http://d.web2.qq.com/proxy.html?v=20110331002&callback=1&id=2";
            return(_HttpWeb.SendToText(sb.ToString()));
        }
예제 #4
0
파일: WebQQ.cs 프로젝트: crcruicai/Library
        /// <summary>
        /// 发送消息.
        /// </summary>
        /// <param name="uin">指定的QQ的Uin</param>
        /// <param name="content">消息的内容.</param>
        /// <param name="font">字体.</param>
        /// <param name="color">颜色.</param>
        /// <returns></returns>
        public bool SendMessage(string uin, string content, Font font, Color color)
        {
            try
            {
                StringBuilder sb = new StringBuilder(400);

                sb.Append("r={\"to\":");
                sb.Append(uin);
                sb.AppendFormat(",\"face\":{0},", 606);
                sb.AppendFormat("\"content\":\"[\\\"{0}\\\",", Encode.ToUnicodeString(content, false));
                sb.Append("[\\\"font\\\",");
                sb.Append("{\\\"name\\\":");
                sb.AppendFormat("\\\"{0}\\\",", Encode.ToUnicodeString(font.Name, true));
                sb.AppendFormat("\\\"size\\\":");
                sb.AppendFormat("\\\"{0}\\\",", font.Size);
                sb.AppendFormat("\\\"style\\\":");
                sb.AppendFormat("[{0}],", Tool.GetFontStyle(font));
                sb.Append("\\\"color\\\":\\\"");
                sb.Append(Tool.GetColor(color));
                sb.Append("\\\"}]]\",");
                sb.Append("\"msg_id\":");
                sb.AppendFormat("{0},", GetSendNumber());
                sb.Append("\"clientid\":");
                sb.AppendFormat("\"{0}\",", _ClientID);
                sb.Append("\"psessionid\":");
                sb.AppendFormat("\"{0}\"", _PsessionID);
                sb.Append("}&clientid=");
                sb.Append(_ClientID);
                sb.AppendFormat("&psessionid={0}", _PsessionID);
                //string data = Encode.HttpUrlEncode(sb.ToString());
                string data = HttpUtility.UrlDecode(sb.ToString());
                _HttpWeb.Referer = HttpText.SendMessageReferer;
                string text = _HttpWeb.PostWebRequest("http://d.web2.qq.com/channel/send_buddy_msg2", data, Encoding.UTF8);
                if (text.IndexOf("result") > -1)
                {
                    return(true);
                }
                else if (text.IndexOf("未能解析此远程名称") > -1)
                {
                    //通知下线.
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                Loger.WriteLog(ex);
            }
            return(false);
        }
예제 #5
0
        private static FriendMessageData GetFriendMessage(JSONObject obj)
        {
            FriendMessageData data = new FriendMessageData();

            data.MsgID   = obj.GetString("msg_id");
            data.MsgID2  = obj.GetString("msg_id2");
            data.MsgType = int.Parse(obj.GetString("msg_type"));
            data.ReplyIP = obj.GetString("reply_ip");
            data.FromUin = obj.GetString("from_uin");
            data.ToUin   = obj.GetString("to_uin");
            JSONArray content = obj.GetJSONArray("content");

            foreach (var item in content)
            {
                if (item is string)
                {
                    string text = item.ToString();
                    if (text.IndexOf("\\u") > -1)
                    {
                        text = Encode.DeUnicode(text);
                    }
                    data.Content.Add(text);
                }
                else if (item is JSONArray)
                {
                    JSONArray array = item as JSONArray;
                    string    flag  = array[0].ToString();
                    if (flag == "face")
                    {
                        data.Content.Add(string.Format("[face{0}]", array[1]));
                    }
                    //JSONArray font = item as JSONArray;
                    //foreach (var sitem in font)
                    //{
                    //    if(sitem is JSONObject )
                    //    {
                    //        JSONObject temp = sitem as JSONObject;

                    //        data.Color = Tool.GetColor(temp.GetString("color"));

                    //    }
                    //}
                }
            }



            return(data);
        }
예제 #6
0
파일: WebQQ.cs 프로젝트: crcruicai/Library
        /// <summary>
        /// 申请加入指定的群.
        /// </summary>
        /// <param name="groupCode">群号码.</param>
        /// <param name="msg">验证的消息</param>
        /// <param name="vfy" >验证码令牌</param>
        /// <returns></returns>
        public string ApplyJoinGroup(string groupCode, string msg, string vfy)
        {
            StringBuilder sb = new StringBuilder(200);

            sb.Append("r=%7B%22gcode%22%3A");
            sb.Append(groupCode);
            sb.Append("%2C%22code%22%3A%22mhtv%22%2C%22vfy%22%3A%");
            sb.Append(vfy);                         //vfy
            sb.Append("%22%2C%22msg%22%3A%22");
            sb.Append(Encode.ToUnicodeString(msg)); //msg
            sb.Append("%22%2C%22vfwebqq%22%3A%");
            sb.Append(_VFWebQQ);
            sb.Append("%22%7D");

            _HttpWeb.Referer = " http://s.web2.qq.com/proxy.html?v=20110412001&callback=1&id=3";
            return(_HttpWeb.PostWebRequest("http://s.web2.qq.com/api/apply_join_group2", sb.ToString(), Encoding.UTF8));
            //{"retcode":0,"result":{"statu":"pending"}}
        }
예제 #7
0
        private static GroupMessageData GetGroupMessage(JSONObject obj)
        {
            GroupMessageData data = new GroupMessageData();

            data.MsgID     = obj.GetString("msg_id");
            data.MsgID2    = obj.GetString("msg_id2");
            data.MsgType   = int.Parse(obj.GetString("msg_type"));
            data.ReplyIP   = obj.GetString("reply_ip");
            data.FromUin   = obj.GetString("from_uin");
            data.ToUin     = obj.GetString("to_uin");
            data.SendUin   = obj.GetString("send_uin");
            data.Seq       = obj.GetString("seq");
            data.Time      = obj.GetString("time");
            data.InfoSeq   = obj.GetString("info_seq");
            data.GroupCode = obj.GetString("group_code");

            JSONArray content = obj.GetJSONArray("content");

            foreach (var item in content)
            {
                if (item is string)
                {
                    string text = item.ToString();
                    if (text.IndexOf("\\u") > -1)
                    {
                        text = Encode.DeUnicode(text);
                    }
                    data.Content.Add(text);
                }
                else if (item is JSONArray)
                {
                    JSONArray array = item as JSONArray;
                    string    flag  = array[0].ToString();
                    if (flag == "face")
                    {
                        data.Content.Add(string.Format("[face{0}]", array[1]));
                    }
                    else if (flag == "font")
                    {
                    }
                }
            }
            return(data);
        }
예제 #8
0
파일: WebQQ.cs 프로젝트: crcruicai/Library
        /// <summary>
        /// 发送群消息.
        /// </summary>
        /// <param name="groupUin"></param>
        /// <param name="content"></param>
        /// <param name="font"></param>
        /// <param name="color"></param>
        /// <returns></returns>
        public string SendGroupMessage(string groupUin, string content, Font font, Color color)
        {
            StringBuilder sb = new StringBuilder(400);

            sb.AppendFormat("r={\"group_uin\":{0}", groupUin);
            sb.AppendFormat(",\"content\":\"[\\\"{0}\\\",", Encode.ToUnicodeString(content));
            sb.Append("[\\\"font\\\",");
            sb.Append("{\\\"name\\\":");
            sb.AppendFormat("\\\"{0}\\\",", Encode.ToUnicodeString(font.Name));
            sb.AppendFormat("", font.Size);
            sb.AppendFormat("", Tool.GetFontStyle(font));
            sb.AppendFormat("", Tool.GetColor(color));
            sb.AppendFormat("", GetSendNumber());
            sb.AppendFormat("", _PsessionID);
            sb.AppendFormat("", _ClientID);
            sb.AppendFormat("", _PsessionID);

            return(null);
        }
예제 #9
0
파일: WebQQ.cs 프로젝트: crcruicai/Library
        /// <summary>
        /// 发送好友验证消息.
        ///
        /// </summary>
        /// <param name="qqnumber">qq号码</param>
        /// <param name="msg">验证消息</param>
        /// <param name="token">令牌</param>
        /// <returns></returns>
        public string AddNeedVerify(string qqnumber, string msg, string token)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("r=%7B%22account%22%3A{0}", qqnumber);
            sb.Append("%2C%22myallow%22%3A1%2C%22groupid%22%3A0%2C%22msg%22%3A%22");
            sb.Append(Encode.ToUnicodeString(msg));
            sb.Append("%22%2C%22token%22%3A%22");
            sb.Append(token);
            sb.Append("%22%2C%22vfwebqq%22%3A%");
            sb.Append(_VFWebQQ);
            sb.Append("%22%7D");

            _HttpWeb.Referer = "http://s.web2.qq.com/proxy.html?v=20110412001&callback=1&id=1";


            return(_HttpWeb.PostWebRequest("http://s.web2.qq.com/api/add_need_verify2",
                                           sb.ToString(), Encoding.UTF8));
        }
예제 #10
0
        private static FriendMessageData GetFriendMessage(string[] array, int index)
        {
            string            item  = string.Empty;
            FriendMessageData value = new FriendMessageData();
            string            name  = string.Empty;
            int    size             = 10;
            string style            = string.Empty;

            for (int i = index; i < array.Length; i++)
            {
                item = array[i];
                string[] a = item.Split(':');
                if (a.Length > 1)
                {
                    switch (a[0])
                    {
                    case "value":
                        if (a.Length > 2)
                        {
                            value.MsgID = a[2];
                        }
                        break;

                    case "from_uin":
                        value.FromUin = a[1];
                        break;

                    case "msg_id2":
                        value.MsgID2 = a[1];
                        break;

                    case "msg_type":
                        value.MsgType = int.Parse(a[1]);
                        break;

                    case "reply_ip":
                        value.ReplyIP = a[1];
                        break;

                    case "time":
                        value.Time = a[1];
                        break;

                    case "to_uin":
                        value.ToUin = a[1];
                        break;

                    case "color":
                        value.Color = Tool.GetColor(a[1]);
                        break;

                    case "name":
                        name = Encode.DeUnicode(a[1]);
                        break;

                    case "size":
                        size = int.Parse(a[1]);
                        break;

                    case "style":
                        style = string.Format("{0}{1}{2}", a[1], array[i + 1], array[i + 2]);
                        i     = i + 2;
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    //Debug.WriteLine(item);
                    if (item.IndexOf("\\u") > -1)
                    {
                        string t = Encode.DeUnicode(item);

                        value.Content.Add(t.Replace("\r", "\r\n"));
                    }
                    else
                    {
                        value.Content.Add(item);
                    }
                }
            }

            return(value);
        }