Ejemplo n.º 1
0
        /// <summary>
        /// 获取群成员信息
        /// </summary>
        /// <param name="groupId">目标群</param>
        /// <param name="qqId">目标QQ</param>
        /// <param name="member">如果成功, 返回群成员信息</param>
        /// <param name="notCache">默认为 "Flase", 通常忽略本参数, 仅在必要的是否使用</param>
        /// <returns>成功返回 0, 失败返回 负数</returns>
        public int GetMemberInfo(long groupId, long qqId, out GroupMember member, bool notCache = false)
        {
            string result = CQP.CQ_getGroupMemberInfoV2(_authCode, groupId, qqId, notCache);

            if (string.IsNullOrEmpty(result))
            {
                member = null;
                return(-1000);
            }
            #region --其它_转换_文本到群成员信息--
            BinaryReader binary = new BinaryReader(new MemoryStream(Convert.FromBase64String(result)));
            member                          = new GroupMember();
            member.GroupId                  = binary.ReadInt64_Ex();
            member.QQId                     = binary.ReadInt64_Ex();
            member.Nick                     = binary.ReadString_Ex(_defaultEncoding);
            member.Card                     = binary.ReadString_Ex(_defaultEncoding);
            member.Sex                      = (Sex)binary.ReadInt32_Ex();
            member.Age                      = binary.ReadInt32_Ex();
            member.Area                     = binary.ReadString_Ex(_defaultEncoding);
            member.JoiningTime              = binary.ReadInt32_Ex().ToDateTime();
            member.LastDateTime             = binary.ReadInt32_Ex().ToDateTime();
            member.Level                    = binary.ReadString_Ex(_defaultEncoding);
            member.PermitType               = (PermitType)binary.ReadInt32_Ex();
            member.BadRecord                = binary.ReadInt32_Ex() == 1;
            member.SpecialTitle             = binary.ReadString_Ex(_defaultEncoding);
            member.SpecialTitleDurationTime = binary.ReadInt32_Ex().ToDateTime();
            member.CanModifiedCard          = binary.ReadInt32_Ex() == 1;
            #endregion
            return(0);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 获取群成员信息
 /// </summary>
 /// <param name="groupId">目标群</param>
 /// <param name="qqId">目标QQ</param>
 /// <param name="notCache">默认为 "Flase", 通常忽略本参数, 仅在必要的是否使用</param>
 /// <returns>获取成功返回 <see cref="GroupMemberInfo"/>, 失败返回 null</returns>
 public GroupMemberInfo GetMemberInfo(long groupId, long qqId, bool notCache = false)
 {
     string result = CQP.CQ_getGroupMemberInfoV2(_authCode, groupId, qqId, notCache).ToString(Encoding.ASCII);
     if (string.IsNullOrEmpty(result))
     {
         return null;
     }
     #region --其它_转换_文本到群成员信息--
     using (BinaryReader binary = new BinaryReader(new MemoryStream(Convert.FromBase64String(result))))
     {
         GroupMemberInfo member = new GroupMemberInfo
         {
             GroupId = binary.ReadInt64_Ex(),
             QQId = binary.ReadInt64_Ex(),
             Nick = binary.ReadString_Ex(_defaultEncoding),
             Card = binary.ReadString_Ex(_defaultEncoding),
             Sex = (Sex)binary.ReadInt32_Ex(),
             Age = binary.ReadInt32_Ex(),
             Area = binary.ReadString_Ex(_defaultEncoding),
             JoiningTime = binary.ReadInt32_Ex().ToDateTime(),
             LastDateTime = binary.ReadInt32_Ex().ToDateTime(),
             Level = binary.ReadString_Ex(_defaultEncoding),
             PermitType = (PermitType)binary.ReadInt32_Ex(),
             BadRecord = binary.ReadInt32_Ex() == 1,
             SpecialTitle = binary.ReadString_Ex(_defaultEncoding),
             SpecialTitleDurationTime = binary.ReadInt32_Ex().ToDateTime(),
             CanModifiedCard = binary.ReadInt32_Ex() == 1
         };
         return member;
     }
     #endregion
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取群成员信息
        /// </summary>
        /// <param name="groupId">目标群</param>
        /// <param name="qqId">目标QQ</param>
        /// <param name="member">如果成功, 返回群成员信息</param>
        /// <param name="notCache">默认为 "Flase", 通常忽略本参数, 仅在必要的是否使用</param>
        /// <returns>成功返回 0, 失败返回 负数</returns>
        public int GetMemberInfo(long groupId, long qqId, out GroupMember member, bool notCache = false)
        {
            string result = CQP.CQ_getGroupMemberInfoV2(_authCode, groupId, qqId, notCache);

            if (string.IsNullOrEmpty(result))
            {
                member = null;
                return(-1000);
            }
            #region --其它_转换_文本到群成员信息--
            member = new GroupMember();
            UnPack unpack = new UnPack(Convert.FromBase64String(result));
            member.GroupId                  = unpack.GetInt64();
            member.QQId                     = unpack.GetInt64();
            member.Nick                     = unpack.GetString(Encoding.GetEncoding("GB18030"));
            member.Card                     = unpack.GetString(Encoding.GetEncoding("GB18030"));
            member.Sex                      = (Sex)unpack.GetInt32();
            member.Age                      = unpack.GetInt32();
            member.Area                     = unpack.GetString(Encoding.GetEncoding("GB18030"));
            member.JoiningTime              = NativeConvert.FotmatUnixTime(unpack.GetInt32().ToString());
            member.LastDateTime             = NativeConvert.FotmatUnixTime(unpack.GetInt32().ToString());
            member.Level                    = unpack.GetString(Encoding.GetEncoding("GB18030"));
            member.PermitType               = (PermitType)unpack.GetInt32();
            member.BadRecord                = unpack.GetInt32() == 1;
            member.SpecialTitle             = unpack.GetString(Encoding.GetEncoding("GB18030"));
            member.SpecialTitleDurationTime = NativeConvert.FotmatUnixTime(unpack.GetInt32().ToString());
            member.CanModifiedCard          = unpack.GetInt32() == 1;
            #endregion
            return(0);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 获取群成员信息
        /// </summary>
        /// <param name="groupId">目标群</param>
        /// <param name="qqId">目标QQ</param>
        /// <param name="notCache">默认为 "Flase", 通常忽略本参数, 仅在必要的是否使用</param>
        /// <returns>获取成功返回 <see cref="GroupMemberInfo"/>, 失败返回 null</returns>
        public GroupMemberInfo GetMemberInfo(long groupId, long qqId, bool notCache = true)
        {
            string result = "";

            try
            {
                result = CQP.CQ_getGroupMemberInfoV2(_authCode, groupId, qqId, notCache).ToString(Encoding.ASCII);
            }
            catch
            {
                return(null);
            }
            if (string.IsNullOrEmpty(result))
            {
                return(null);
            }
            #region --其它_转换_文本到群成员信息--
            using (BinaryReader binary = new BinaryReader(new MemoryStream(Convert.FromBase64String(result))))
            {
                GroupMemberInfo member = new GroupMemberInfo();
                member.GroupId                  = binary.ReadInt64_Ex();
                member.QQId                     = binary.ReadInt64_Ex();
                member.Nick                     = binary.ReadString_Ex(_defaultEncoding);
                member.Card                     = binary.ReadString_Ex(_defaultEncoding);
                member.Sex                      = (Sex)binary.ReadInt32_Ex();
                member.Age                      = binary.ReadInt32_Ex();
                member.Area                     = binary.ReadString_Ex(_defaultEncoding);
                member.JoiningTime              = binary.ReadInt32_Ex().ToDateTime();
                member.LastDateTime             = binary.ReadInt32_Ex().ToDateTime();
                member.Level                    = binary.ReadString_Ex(_defaultEncoding);
                member.PermitType               = (PermitType)binary.ReadInt32_Ex();
                member.BadRecord                = binary.ReadInt32_Ex() == 1;
                member.SpecialTitle             = binary.ReadString_Ex(_defaultEncoding);
                member.SpecialTitleDurationTime = binary.ReadInt32_Ex().ToDateTime();
                member.CanModifiedCard          = binary.ReadInt32_Ex() == 1;
                return(member);
            }
            #endregion
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 获取群成员信息
        /// </summary>
        /// <param name="groupId">目标群</param>
        /// <param name="qqId">目标帐号</param>
        /// <param name="notCache">不使用缓存, 默认为 <code>false</code>, 通常忽略本参数, 仅在必要时使用</param>
        /// <exception cref="ArgumentOutOfRangeException">参数: groupId 或 qqId 超出范围</exception>
        /// <exception cref="InvalidDataException">数据流格式错误 或为 null</exception>
        /// <exception cref="EndOfStreamException">无法读取数据, 因为已读取到数据流末尾</exception>
        /// <returns>获取成功返回 <see cref="GroupMemberInfo"/>, 失败返回 <see langword="null"/></returns>
        public GroupMemberInfo GetGroupMemberInfo(long groupId, long qqId, bool notCache = false)
        {
            if (groupId < Group.MinValue)
            {
                throw new ArgumentOutOfRangeException("groupId");
            }

            if (qqId < QQ.MinValue)
            {
                throw new ArgumentOutOfRangeException("qqId");
            }

            string data = CQP.CQ_getGroupMemberInfoV2(this.AppInfo.AuthCode, groupId, qqId, notCache).ToString(CQApi.DefaultEncoding);

            if (string.IsNullOrEmpty(data))
            {
#if DEBUG
                throw new InvalidDataException("获取的数据流格式无效");
#else
                return(null);
#endif
            }

            try
            {
                return(new GroupMemberInfo(this, data));
            }
            catch
            {
#if DEBUG
                throw;
#else
                return(null);
#endif
            }
        }