/// <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); }
/// <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 }
/// <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); }
/// <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 }
/// <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 } }