Example #1
0
 public static int Event_pluginStop()
 {
     QLAPI.CoUninitialize();
     QLAPI.Api_SendLog("Debug", "已停止", 0, ac);
     DataManager.Stop();
     return(0);
 }
Example #2
0
        public static UserInfo Get(long qqNo)
        {
            string result = QLAPI.Api_GetQQInfo(qqNo.ToString(), QLMain.ac);

            //QLAPI.Api_SendLog("Debug", "Api_GetQQInfo:"+result, 0, QLMain.ac);
            if (string.IsNullOrEmpty(result))
            {
                return(null);
            }

            var info = JsonConvert.DeserializeObject <JsonModel <QQJsonModel> >(result);
            var qq   = info.Result.buddy.info_list[0];

            var qqInfo = new QQ();

            qqInfo.Id   = qq.uin;
            qqInfo.Nick = qq.nick;
            qqInfo.Sex  = (Sex)qq.gender;

            var user = Users.Find(p => p.QQ == qqNo);

            if (user != null)
            {
                user.Nick = qqInfo.Nick;
                user.Sex  = qqInfo.Sex;
            }
            else
            {
                Users.Add(new UserInfo(qqInfo));
            }

            return(user);
        }
Example #3
0
        public override async Task ExecuteAsync(List <string> command, EventSourceType sourceType, UserInfo qq, Group group, GroupMember member)
        {
            if (sourceType != EventSourceType.Private)
            {
                return;
            }

            QLAPI.Api_SendPraise(qq.QQ.ToString(), QLMain.ac);
            MessageManager.Send(sourceType, "赞了赞了!", qq?.QQ);
        }
Example #4
0
        public static int Event_GetNewMsg(int type, string GroupID, string FromQQ, string Msg, string MsgID)
        {
            QLAPI.Api_SendLog("收到信息", string.Format("type:{0},GroupID:{1},FromQQ:{2},Msg:{3},MsgID:{4}", type, GroupID, FromQQ, Msg, MsgID), 0, ac);
            if (Msg.IndexOf("s") > -1)
            {
                QLAPI.Api_SendMsg(type, GroupID, FromQQ, "您发送了带有s的字符串", ac);
            }
            return(MSG_CONTINUE);

            // MSG_INTERCEPT 代表拦截消息不传递到下一个插件,插件的优先级可以通过拖拽插件列表来调整
        }
Example #5
0
 public static int Event_pluginStart()
 {
     QLAPI.CoInitialize(0);
     QLAPI.Api_SendLog("Debug", "已启动", 0, ac);
     try
     {
         CommandCenter.ReloadManagers();
         DataManager.Init();
     }
     catch (Exception e)
     {
         QLAPI.Api_SendLog("Error", e.Message + e.StackTrace, 0, ac);
     }
     return(0);
 }
Example #6
0
        public static void ReloadManagers()
        {
            QLAPI.Api_SendLog("debug", "ReloadingManager", 0, QLMain.ac);
            //只能拿到直接继承的派生类,有需要的时候再改
            var managerTypes = Assembly.GetExecutingAssembly().GetTypes()
                               .Where(p => p.BaseType == typeof(BaseManager)).ToList();

            QLAPI.Api_SendLog("debug", $"found {managerTypes.Count} managers", 0, QLMain.ac);
            var managerWithCommands = managerTypes.Select(p => new
            {
                Type        = p,
                CommandList = p.GetCustomAttributes <CommandAttribute>().ToList()
            }).Where(p => p.CommandList.Any()).ToList();

            managerWithCommands.ForEach(p => { p.CommandList.ForEach(q => { Managers.Add(q.Command, p.Type); }); });
            QLAPI.Api_SendLog("debug", $"found {managerWithCommands.Count}", 0, QLMain.ac);
        }
Example #7
0
        public override async Task ExecuteAsync(List <string> command, EventSourceType sourceType, UserInfo qq, Group group, GroupMember member)
        {
            var name = "";

            if (sourceType == EventSourceType.Group)
            {
                if (member == null)
                {
                    QLAPI.Api_SendLog("debug", "Jrrp group member is null", 0, QLMain.ac);
                    return;
                }
                if (_disabledJrrpGroupNumbers.Contains(member.GroupNumber))
                {
                    return;
                }

                name = member.GroupName;
            }
            else if (sourceType == EventSourceType.Private || sourceType == EventSourceType.Friend)
            {
                if (qq == null)
                {
                    QLAPI.Api_SendLog("debug", "Jrrp qq is null", 0, QLMain.ac);
                    return;
                }
                name = qq.Name;
            }

            var isReroll = qq.ReRollStep == UserInfo.RerollStep.CanReroll;
            var rp       = GetJrrp(qq, isReroll);

            switch (qq.ReRollStep)
            {
            case UserInfo.RerollStep.None:
                MessageManager.Send(sourceType, name + "今天的人品值是:" + rp, qq: qq?.QQ, toGroupNo: member?.GroupNumber);
                return;

            case UserInfo.RerollStep.CanReroll:
                MessageManager.Send(sourceType, name + "今天的人品不太好,确定要看的话就再来一次吧", qq: qq?.QQ, toGroupNo: member?.GroupNumber);
                return;

            case UserInfo.RerollStep.RerollFaild:
                if (rp == 1)
                {
                    MessageManager.Send(sourceType, $"……", qq: qq?.QQ, toGroupNo: member?.GroupNumber);
                }
                else
                {
                    MessageManager.Send(sourceType, name + $"今天的人品值只有:{rp}", qq: qq?.QQ, toGroupNo: member?.GroupNumber);
                }
                return;

            case UserInfo.RerollStep.RerollSuccess:
                MessageManager.Send(sourceType, $"啊!对不起刚才是我失误了!{name}今天人品值应该是:{rp}", qq: qq?.QQ, toGroupNo: member?.GroupNumber);
                qq.ReRollStep = UserInfo.RerollStep.None;
                return;

            case UserInfo.RerollStep.RerollDevastated:
                if (rp == 1)
                {
                    MessageManager.Send(sourceType, $"……", qq: qq?.QQ, toGroupNo: member?.GroupNumber);
                }
                else
                {
                    MessageManager.Send(sourceType, $"都说了不想告诉你了嘛……{name}今天人品值只有:{rp}", qq: qq?.QQ, toGroupNo: member?.GroupNumber);
                }
                qq.ReRollStep = UserInfo.RerollStep.RerollFaild;
                return;
            }
        }
Example #8
0
        public static GroupMember Get(long qq, long groupNo)
        {
            var member = GroupMembers.Find(p => p.QQ == qq && p.GroupId == groupNo);

            if (member != null)
            {
                return(member);
            }

            string result = QLAPI.Api_GetGroupMemberList(groupNo.ToString(), false, QLMain.ac);

            //QLAPI.Api_SendLog("Debug", "Api_GetGroupMemberList:" + result, 0, QLMain.ac);
            if (string.IsNullOrEmpty(result))
            {
                return(null);
            }
            var info = JsonConvert.DeserializeObject <GroupMemberJsonModel>(result);

            if (!info.members.ContainsKey(qq.ToString()))
            {
                return(null);
            }

            info.members.Select(p => new
            {
                QQ     = p.Key,
                member = p.Value
            }).ToList().ForEach(p =>
            {
                var basemember = new PirateZombie.SDK.BaseModel.GroupMember();

                basemember.GroupId = groupNo;
                basemember.QQId    = long.Parse(p.QQ);
                //member.Nick = binary.ReadString_Ex(_defaultEncoding);

                var memberInfo = info.members[p.QQ];

                var card        = Regex.Unescape((memberInfo.cd ?? memberInfo.nk).Replace("&nbsp;", " "));
                basemember.Card = card;
                //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);
                basemember.PermitType = info.owner == basemember.QQId
                    ? PermitType.Holder
                    : (info.adm != null && info.adm.Any() && info.adm.Contains(basemember.QQId) ? PermitType.Manage : PermitType.None);
                //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
                //var gm = _groupMembers.Find(p => p.QQ == qq && p.GroupNumber == groupNo);
                //if (gm == null)
                //{
                //    gm = new GroupMember(member);
                //    _groupMembers.Add(gm);
                //}
                //else
                //{
                //    gm.Copy(member);
                //}
                member = new GroupMember(basemember);
                GroupMembers.Add(member);
            });
            member = GroupMembers.Find(p => p.QQ == qq && p.GroupId == groupNo);
            return(member);
        }
Example #9
0
 public static int Event_Initialization()
 {
     QLAPI.init();//初始化API,不可删除
     QLAPI.Api_SendLog("Debug", "成功", 0, ac);
     return(0);
 }
Example #10
0
        public static int Event_GetNewMsg(int type, string GroupID, string FromQQ, string Msg, string MsgID)
        {
            QLAPI.Api_SendLog("收到信息", string.Format("type:{0},GroupID:{1},FromQQ:{2},Msg:{3},MsgID:{4}", type, GroupID, FromQQ, Msg, MsgID), 0, ac);
            //if (Msg.IndexOf("s") > -1)
            //{
            //    QLAPI.Api_SendMsg(type, GroupID, FromQQ, "您发送了带有s的字符串", ac);
            //}

            EventSourceType?source = null;

            switch (type)
            {
            case 1:
                source = EventSourceType.Friend;
                break;

            case 2:
                source = EventSourceType.Group;
                break;

            case 3:
            case 5:
                break;

            case 4:
                source = EventSourceType.Discuss;
                break;

            case 6:
                source = EventSourceType.Private;
                break;
            }

            if (source.HasValue)
            {
                long?qq      = null;
                long?groupId = null;
                if (long.TryParse(FromQQ, out var tqq))
                {
                    qq = tqq;
                }
                if (long.TryParse(GroupID, out var tgroupId))
                {
                    groupId = tgroupId;
                }

                try
                {
                    CommandCenter.Execute(Msg, source.Value, qq, groupId);
                }
                catch (Exception e)
                {
                    QLAPI.Api_SendLog("Error", e.Message + e.StackTrace, 0, QLMain.ac);
                }
            }
            else
            {
                QLAPI.Api_SendLog("Error", "不支持的消息来源类型", 0, QLMain.ac);
            }

            return(MSG_CONTINUE);

            // MSG_INTERCEPT 代表拦截消息不传递到下一个插件,插件的优先级可以通过拖拽插件列表来调整
        }
Example #11
0
 public static int Event_pluginStop()
 {
     QLAPI.CoUninitialize();
     return(0);
 }
Example #12
0
 public static int Event_pluginStart()
 {
     QLAPI.CoInitialize(0);
     return(0);
 }
Example #13
0
 public static void SendFriend(long qq, string message)
 {
     QLAPI.Api_SendMsg(EventSourceType.Friend.ToInt(), null, qq.ToString(), message, QLMain.ac);
 }
Example #14
0
 public static void SendToGroup(long groupNo, string message)
 {
     QLAPI.Api_SendMsg(EventSourceType.Group.ToInt(), groupNo.ToString(), null, message, QLMain.ac);
 }