Exemplo n.º 1
0
        private static int EventSystemGroupMemberIncrease(int subType, int sendTime, long fromGroup, long fromQQ, long beingOperateQQ)
        {
            GroupMemberAlterEventArgs args = new GroupMemberAlterEventArgs();

            args.SendTime       = NativeConvert.FotmatUnixTime(sendTime.ToString());
            args.FromGroup      = fromGroup;
            args.FromQQ         = fromQQ;
            args.BeingOperateQQ = beingOperateQQ;
            args.Handled        = false;

            if (subType == 1)                   // 管理员同意
            {
                ReceiveMemberJoin(null, args);
            }
            else if (subType == 2)              // 管理员邀请
            {
                ReceiveMemberInvitee(null, args);
            }
            else
            {
                Common.CqApi.AddLoger(LogerLevel.Info, "Native提示", "EventSystemGroupMemberIncrease 方法发现新的消息类型");
            }

            return((int)(args.Handled ? MessageHanding.Intercept : MessageHanding.Ignored));            //如果处理过就截断消息
        }
Exemplo n.º 2
0
        private static int EventRequestAddGroup(int subType, int sendTime, long fromGroup, long fromQQ, IntPtr msg, string responseFlag)
        {
            GroupAddRequestEventArgs args = new GroupAddRequestEventArgs();

            args.SendTime  = NativeConvert.FotmatUnixTime(sendTime.ToString());
            args.FromGroup = fromGroup;
            args.FromQQ    = fromQQ;
            args.AppendMsg = NativeConvert.ToPtrString(msg, Encoding.GetEncoding("GB18030"));
            args.Tag       = responseFlag;
            args.Handled   = false;

            if (subType == 1)                   // 申请加入群
            {
                ReceiveGroupAddApply(null, args);
            }
            else if (subType == 2)              // 机器人被邀请
            {
                ReceiveGroupAddInvitee(null, args);
            }
            else
            {
                Common.CqApi.AddLoger(LogerLevel.Info, "Native提示", "EventRequestAddGroup 方法发现新的消息类型");
            }

            return(0);
        }
Exemplo 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);
        }
Exemplo n.º 4
0
        private static int EventSystemGroupMemberDecrease(int subType, int sendTime, long fromGroup, long fromQQ, long beingOperateQQ)
        {
            CqGroupMemberDecreaseEventArgs args = new CqGroupMemberDecreaseEventArgs();

            args.SendTime       = NativeConvert.FotmatUnixTime(sendTime.ToString());
            args.FromGroup      = fromGroup;
            args.FromQQ         = fromQQ;
            args.BeingOperateQQ = beingOperateQQ;
            args.Handler        = false;

            if (subType == 1)                   // 群员离开
            {
                args.FromQQ = beingOperateQQ;   // 此时 FormQQ 为操作者QQ
                ReceiveMemberLeave(null, args);
            }
            else if (subType == 2)
            {
                ReceiveMemberRemove(null, args);
            }
            else
            {
                Common.CqApi.AddLoger(LogerLevel.Info, "Native提示", "EventSystemGroupMemberDecrease 方法发现新的消息类型");
            }

            return((int)(args.Handler ? MessageHanding.Intercept : MessageHanding.Ignored));            //如果处理过就截断消息
        }
Exemplo n.º 5
0
        private static int EventGroupUpload(int subType, int sendTime, long fromGroup, long fromQQ, string file)
        {
            FileUploadMessageEventArgs args = new FileUploadMessageEventArgs();

            args.SendTime  = NativeConvert.FotmatUnixTime(sendTime.ToString());
            args.FromGroup = fromGroup;
            args.FromQQ    = fromQQ;
            args.File      = Common.CqApi.GetFile(file);
            ReceiveFileUploadMessage(null, args);
            return((int)(args.Handled ? MessageHanding.Intercept : MessageHanding.Ignored));            //如果处理过就截断消息
        }
Exemplo n.º 6
0
        /// <summary>
        /// 获取群成员列表
        /// </summary>
        /// <param name="groupId">目标群</param>
        /// <param name="memberInfos">如果成功,返回群成员列表</param>
        /// <returns>成功返回 0, 失败返回 负数</returns>
        public int GetMemberList(long groupId, out List <GroupMember> memberInfos)
        {
            string result = CQP.CQ_getGroupMemberList(_authCode, groupId);

            if (string.IsNullOrEmpty(result))
            {
                memberInfos = null;
                return(-1000);
            }
            #region --其他_转换_文本到群成员列表信息a--
            UnPack unpack = new UnPack(Convert.FromBase64String(result));
            memberInfos = new List <GroupMember> ();
            for (int i = 0, len = unpack.GetInt32(); i < len; i++)
            {
                if (unpack.OverLength <= 0)
                {
                    memberInfos = null;
                    return(-1000);
                }
                #region --其它_转换_ansihex到群成员信息--
                UnPack      temp   = new UnPack(unpack.GetToken()); //解析群成员信息
                GroupMember member = new GroupMember
                {
                    GroupId                  = temp.GetInt64(),
                    QQId                     = temp.GetInt64(),
                    Nick                     = temp.GetString(Encoding.GetEncoding("GB18030")),
                    Card                     = temp.GetString(Encoding.GetEncoding("GB18030")),
                    Sex                      = (Sex)temp.GetInt32(),
                    Age                      = temp.GetInt32(),
                    Area                     = temp.GetString(Encoding.GetEncoding("GB18030")),
                    JoiningTime              = NativeConvert.FotmatUnixTime(temp.GetInt32().ToString()),
                    LastDateTime             = NativeConvert.FotmatUnixTime(temp.GetInt32().ToString()),
                    Level                    = temp.GetString(Encoding.GetEncoding("GB18030")),
                    PermitType               = (PermitType)temp.GetInt32(),
                    BadRecord                = temp.GetInt32() == 1,
                    SpecialTitle             = temp.GetString(Encoding.GetEncoding("GB18030")),
                    SpecialTitleDurationTime = NativeConvert.FotmatUnixTime(temp.GetInt32().ToString()),
                    CanModifiedCard          = temp.GetInt32() == 1
                };
                #endregion
                memberInfos.Add(member);
            }
            #endregion
            return(0);
        }
Exemplo n.º 7
0
        private static int EventFriendAdd(int subType, int sendTime, long fromQQ)
        {
            FriendIncreaseEventArgs args = new FriendIncreaseEventArgs();

            args.SendTime = NativeConvert.FotmatUnixTime(sendTime.ToString());
            args.FromQQ   = fromQQ;
            args.Handled  = false;

            if (subType == 1)               // 好友已添加
            {
                ReceiveFriendIncrease(null, args);
            }
            else
            {
                Common.CqApi.AddLoger(LogerLevel.Info, "Native提示", "EventFriendAdd 方法发现新的消息类型");
            }

            return((int)(args.Handled ? MessageHanding.Intercept : MessageHanding.Ignored));            //如果处理过就截断消息
        }
Exemplo n.º 8
0
        private static int EventRequestAddFriend(int subType, int sendTime, long fromQQ, IntPtr msg, string responseFlag)
        {
            FriendAddRequestEventArgs args = new FriendAddRequestEventArgs();

            args.SendTime  = NativeConvert.FotmatUnixTime(sendTime.ToString());
            args.FromQQ    = fromQQ;
            args.AppendMsg = NativeConvert.ToPtrString(msg, Encoding.GetEncoding("GB18030"));
            args.Tag       = responseFlag;
            args.Handled   = false;

            if (subType == 1)               // 好友添加请求
            {
                ReceiveFriendAdd(null, args);
            }
            else
            {
                Common.CqApi.AddLoger(LogerLevel.Info, "Native提示", "EventRequestAddFriend 方法发现新的消息类型");
            }

            return((int)(args.Handled ? MessageHanding.Intercept : MessageHanding.Ignored));            //如果处理过就截断消息
        }
Exemplo n.º 9
0
        private static int EventSystemGroupAdmin(int subType, int sendTime, long fromGroup, long beingOperateQQ)
        {
            CqGroupManageChangeEventArgs args = new CqGroupManageChangeEventArgs();

            args.SendTime       = NativeConvert.FotmatUnixTime(sendTime.ToString());
            args.FromGroup      = fromGroup;
            args.BeingOperateQQ = beingOperateQQ;
            args.Handler        = false;

            if (subType == 1)                   // 被取消管理员
            {
                ReceiveManageDecrease(null, args);
            }
            else if (subType == 2)              // 被设置管理员
            {
                ReceiveManageIncrease(null, args);
            }
            else
            {
                Common.CqApi.AddLoger(LogerLevel.Info, "Native提示", "EventSystemGroupAdmin 方法发现新的消息类型");
            }

            return((int)(args.Handler ? MessageHanding.Intercept : MessageHanding.Ignored));            //如果处理过就截断消息
        }