Example #1
0
        public ModelWithSourceString <IEnumerable <GroupInfo> > GetGroupsWithModel()
        {
            var source = GetGroups();
            var re     = new ModelWithSourceString <IEnumerable <GroupInfo> >
            {
                SourceString = source,
                Model        = _groupInfoSerializer.DeserializeGroupInfos(source),
            };

            return(re);
        }
Example #2
0
        public ModelWithSourceString <IEnumerable <GroupMemberInfo> > GetGroupMemebersWithModel(string toGroup)
        {
            var source = GetGroupMemebers(toGroup);
            var re     = new ModelWithSourceString <IEnumerable <GroupMemberInfo> >
            {
                SourceString = source,
                Model        = _groupMemberInfoSerializer.DeserializeGroupMemberInfos(source),
            };

            return(re);
        }
Example #3
0
        public override GetGroupMemebersWithModelApiMahuaCommandResult Handle(
            GetGroupMemebersWithModelApiMahuaCommand message)
        {
            // "_GroupMember_Callback({\"code\":0,\"data\":{\"alpha\":0,\"bbscount\":0,\"class\":10012,\"create_time\":1569138527,\"filecount\":0,\"finger_memo\":\"\",\"group_memo\":\"\",\"group_name\":\"PikachuRobot\",\"item\":[{\"iscreator\":1,\"ismanager\":0,\"nick\":\".\",\"uin\":1844867503},{\"iscreator\":0,\"ismanager\":0,\"nick\":\"小黑\",\"uin\":2758938447}],\"level\":0,\"nick\":\"小黑\",\"option\":2,\"total\":3},\"default\":0,\"message\":\"\",\"subcode\":0});"
            //string info = MpqApi.Api_GetGroupMemberB(CurrentQq, message.ToGroup);

            // "{\"ec\":0,\"errcode\":0,\"em\":\"\",\"adm_num\":0,\"adm_max\":10,\"vecsize\":1,\"0\":0,\"mems\":[{\"uin\":1844867503,\"role\":0,\"flag\":0,\"g\":-1,\"join_time\":1569138527,\"last_speak_time\":1569465871,\"lv\":{\"point\":0,\"level\":1},\"nick\":\".\",\"card\":\"\",\"qage\":7,\"tags\":\"-1\",\"rm\":0},{\"uin\":2758938447,\"role\":2,\"flag\":0,\"g\":-1,\"join_time\":1569139041,\"last_speak_time\":1569465854,\"lv\":{\"point\":0,\"level\":1},\"nick\":\"\\u5c0f\\u9ed1\",\"card\":\"\",\"qage\":0,\"tags\":\"-1\",\"rm\":0},{\"uin\":1036504373,\"role\":2,\"flag\":0,\"g\":0,\"join_time\":1569229350,\"last_speak_time\":1569233318,\"lv\":{\"point\":0,\"level\":1},\"nick\":\"\\uff02\\u7eed\\u5fc3\\u8a00\\u3001\",\"card\":\"\",\"qage\":9,\"tags\":\"-1\",\"rm\":0}]{\"ec\":0,\"errcode\":0,\"em\":\"\",\"adm_num\":0,\"adm_max\":10,\"vecsize\":1,\"0\":0,\"count\":3,\"svr_time\":1569465874,\"max_count\":200,\"search_count\":3}";
            // bug 返回数据格式异常 且群主role值为0(普通)
            string groupMemberA = this.MpqApi.Api_GetGroupMemberA(this.CurrentQq, message.ToGroup);

            if (string.IsNullOrEmpty(groupMemberA))
            {
                return new GetGroupMemebersWithModelApiMahuaCommandResult()
                       {
                           ModelWithSourceString = new ModelWithSourceString <IEnumerable <GroupMemberInfo> >()
                           {
                               SourceString = groupMemberA,
                               Model        = Enumerable.Empty <GroupMemberInfo>()
                           }
                       }
            }
            ;

            GroupMemberInfoListJson memberInfoListJson = MpqHelper.DeserGroupMemberJsonA(groupMemberA);

            ModelWithSourceString <IEnumerable <GroupMemberInfo> > withSourceString = new ModelWithSourceString <IEnumerable <GroupMemberInfo> >()
            {
                SourceString = groupMemberA,
                Model        = ((IEnumerable <Mem>)memberInfoListJson.Mems).Select((x => new GroupMemberInfo()
                {
                    Group = message.ToGroup,
                    Age = 0,
                    Area = string.Empty,
                    Authority = this.GetGroupMemberAuthority(x.Role),
                    CanModifyInGroupName = false,
                    Gender = this.GetGender(x.G),
                    HasBadRecord = false,
                    InGroupName = x.Card,
                    JoinTime = Clock.ConvertSecondsToDateTime((long)x.Join_time),
                    LastSpeakingTime = Clock.ConvertSecondsToDateTime((long)x.Last_speak_time),
                    Level = x.Lv.Level.ToString(),
                    NickName = x.Nick,
                    Qq = x.Uin.ToString(),
                    SpecialTitle = string.Empty,
                    TitleExpirationTime = TimeSpan.MinValue
                })).ToArray()
            };

            return(new GetGroupMemebersWithModelApiMahuaCommandResult()
            {
                ModelWithSourceString = withSourceString
            });
        }
Example #4
0
        /// <summary>
        /// 获取群成员,并缓存
        /// </summary>
        /// <param name="api"></param>
        /// <param name="groupId"></param>
        /// <returns></returns>
        public static List <GroupMemberInfoWithBocai> GetGroupMemberListAndCache(ICoolQApi api, long groupId)
        {
            List <GroupMemberInfoWithBocai>                        list   = new List <GroupMemberInfoWithBocai>();
            Dictionary <long, GroupMemberInfoWithBocai>            keyVal = new Dictionary <long, GroupMemberInfoWithBocai>();
            ModelWithSourceString <IEnumerable <GroupMemberInfo> > result = CoolApiExtensions.GetGroupMemberList(api, groupId);
            IEnumerable <GroupMemberInfo> iterator = result.Model;

            if (iterator != null)
            {
                foreach (GroupMemberInfo memberInfo in iterator)
                {
                    GroupMemberInfoWithBocai groupMemberInfoWithBocai = new GroupMemberInfoWithBocai(memberInfo, list.Count);

                    //增加短名字
                    //===================2018-02===================
                    string shortName = "";// Regex.Replace(g.NickName, @"\[[^\]]*?\]", "");
                    shortName = function.filtetStingSpecial(groupMemberInfoWithBocai.GroupMemberBaseInfo.NickName);
                    //===================2018-02===================


                    shortName = shortName.Replace("'", "").Replace("/", "").Replace("\\", "").Replace("\"", "").Replace(".", "");
                    bool isHanzi = false;
                    for (int ii = 0; ii < shortName.Length; ii++)
                    {
                        if ((int)shortName[ii] > 127)
                        {
                            //是汉字
                            isHanzi = true;
                            break;
                        }
                    }
                    if (isHanzi)
                    {
                        shortName = shortName.Length > 2 ? shortName.Substring(0, 2) : shortName;
                    }
                    else
                    {
                        shortName = shortName.Length > 4 ? shortName.Substring(0, 4) : shortName;
                    }

                    groupMemberInfoWithBocai.NickNameShort = shortName;

                    list.Add(groupMemberInfoWithBocai);
                    keyVal.Add(memberInfo.Number, groupMemberInfoWithBocai);
                }
            }

            CacheData.GroupMemberInfoList = list;
            CacheData.GroupMemberInfoDic  = keyVal;
            return(list);
        }
Example #5
0
        public override GetGroupMemebersWithModelApiMahuaCommandResult Handle(
            GetGroupMemebersWithModelApiMahuaCommand message)
        {
            var source = CoolQApi.CQ_getGroupMemberList(AuthCode, long.Parse(message.ToGroup));
            var modelWithSourceString = new ModelWithSourceString <IEnumerable <GroupMemberInfo> >
            {
                SourceString = source,
                Model        = _groupMemberInfoSerializer.DeserializeGroupMemberInfos(source),
            };
            var re = new GetGroupMemebersWithModelApiMahuaCommandResult
            {
                ModelWithSourceString = modelWithSourceString
            };

            return(re);
        }
Example #6
0
        /// <summary>
        /// 取群成员列表
        /// </summary>
        /// <param name="api">api</param>
        /// <param name="groupId">目标群</param>
        /// <returns></returns>
        public static ModelWithSourceString <IEnumerable <GroupMemberInfo> > GetGroupMemberList(this ICoolQApi api,
                                                                                                long groupId)
        {
            var source = api.GetGroupMemberListAsString(groupId);
            var list   = new List <GroupMemberInfo>();
            var re     = new ModelWithSourceString <IEnumerable <GroupMemberInfo> >
            {
                SourceString = source,
                Model        = Enumerable.Empty <GroupMemberInfo>()
            };

            if (ConvertStrToGroupMemberInfos(source, ref list))
            {
                re.Model = list;
            }
            return(re);
        }
Example #7
0
        /// <summary>
        ///     取群成员信息(支持缓存)
        /// </summary>
        /// <param name="api">api</param>
        /// <param name="groupId">目标群</param>
        /// <param name="qqId">目标QQ</param>
        /// <param name="cache">是否缓存</param>
        /// <returns></returns>
        public static ModelWithSourceString <GroupMemberInfo> GetGroupMemberInfoV2(this ICoolQApi api,
                                                                                   long groupId, long qqId,
                                                                                   bool cache)
        {
            var data   = api.GetGroupMemberInfoV2AsString(groupId, qqId, cache);
            var source = Convert.FromBase64String(data);
            var re     = new ModelWithSourceString <GroupMemberInfo>
            {
                SourceString = data
            };
            GroupMemberInfo gm = new GroupMemberInfo();

            if (ConvertAnsiHexToGroupMemberInfo(source, ref gm))
            {
                re.Model = gm;
            }
            return(re);
        }
Example #8
0
        public override GetGroupsWithModelApiMahuaCommandResult Handle(GetGroupsWithModelApiMahuaCommand message)
        {
            var json = CleverQQApi.Api_GetGroupList(CurrentQq);

            if (string.IsNullOrEmpty(json))
            {
                return(new GetGroupsWithModelApiMahuaCommandResult
                {
                    ModelWithSourceString = new ModelWithSourceString <IEnumerable <GroupInfo> >
                    {
                        Model = Enumerable.Empty <GroupInfo>(),
                        SourceString = json
                    }
                });
            }

            var js = new JavaScriptSerializer
            {
                MaxJsonLength = int.MaxValue
            };
            var groupInfos = js.Deserialize <GroupInfoJsonList>(json);
            var re         = groupInfos.Join
                             .Select(x => new GroupInfo
            {
                Group = x.Gc.ToString(),
                Name  = x.Gn
            })
                             .ToArray();
            var modelWithSourceString = new ModelWithSourceString <IEnumerable <GroupInfo> >
            {
                SourceString = json,
                Model        = re
            };
            var getGroupsWithModelApiMahuaCommandResult = new GetGroupsWithModelApiMahuaCommandResult
            {
                ModelWithSourceString = modelWithSourceString
            };

            return(getGroupsWithModelApiMahuaCommandResult);
        }
        public override GetGroupMemebersWithModelApiMahuaCommandResult Handle(
            GetGroupMemebersWithModelApiMahuaCommand message)
        {
            var json = MpqApi.Api_GetGroupMemberA(CurrentQq, message.ToGroup);

            if (string.IsNullOrEmpty(json))
            {
                return(new GetGroupMemebersWithModelApiMahuaCommandResult
                {
                    ModelWithSourceString = new ModelWithSourceString <IEnumerable <GroupMemberInfo> >
                    {
                        SourceString = json,
                        Model = Enumerable.Empty <GroupMemberInfo>()
                    }
                });
            }

            var js = new JavaScriptSerializer
            {
                MaxJsonLength = int.MaxValue
            };
            var infos = js.Deserialize <GroupMemberInfoListJson>(json);

            var modelWithSourceString = new ModelWithSourceString <IEnumerable <GroupMemberInfo> >
            {
                SourceString = json,
                Model        = infos.Mems
                               .Select(x => new GroupMemberInfo
                {
                    Group = message.ToGroup,

                    // todo age
                    Age = 0,

                    // todo Area
                    Area      = string.Empty,
                    Authority = GetGroupMemberAuthority(x.Role),

                    // todo CanModifyInGroupName
                    CanModifyInGroupName = false,
                    Gender = GetGender(x.G),

                    // todo CanModifyInGroupName
                    HasBadRecord     = false,
                    InGroupName      = x.Card,
                    JoinTime         = Clock.ConvertSecondsToDateTime(x.Join_time),
                    LastSpeakingTime = Clock.ConvertSecondsToDateTime(x.Last_speak_time),
                    Level            = x.Lv.Level.ToString(),
                    NickName         = x.Nick,
                    Qq = x.Uin.ToString(),

                    // todo SpecialTitle
                    SpecialTitle = string.Empty,

                    // todo TitleExpirationTime
                    TitleExpirationTime = TimeSpan.MinValue
                }).ToArray(),
            };
            var re = new GetGroupMemebersWithModelApiMahuaCommandResult
            {
                ModelWithSourceString = modelWithSourceString,
            };

            return(re);
        }
Example #10
0
        // private MessageController messageController = new MessageController();
        public void ProcessGroupMessage(GroupMessageReceivedContext context)
        {
            String message = context.Message;

            message = message.Trim();
            if (message == "" || message.Length == 0 || message == null)
            {
                return;
            }
            String myQQ   = _mahuaApi.GetLoginQq();
            String aiteQQ = "[CQ:at,qq=" + myQQ + "]";

            if (message.Contains(aiteQQ))
            {
                String sendMessage = "[CQ:at,qq=" + context.FromQq + "]";
                message = message.Replace(aiteQQ, "").Replace("\"\"", "").Replace("“", "").Replace("”", "").Trim();
                IDatabase redis = RedisHelper.getRedis();
                // 判断用户是否在缓冲中
                if (redis.StringGet(context.FromQq).IsNull)
                {
                    redis.StringSet(context.FromQq, "flag");
                    redis.KeyExpire(context.FromQq, new TimeSpan(10000000 * Convert.ToInt16(Constants.sleepTime)));
                }
                else
                {
                    string tmpStr = "为防止造成刷屏,您每次使用机器人的时间间隔" + Constants.sleepTime + "秒哦!";
                    sendMessage += tmpStr;
                    _mahuaApi.SendGroupMessage(context.FromGroup, sendMessage);
                    return;
                };
                if (message == null || message == "" || message.Length == 0)
                {
                    //
                }
                else
                {
                    MessageModel messageModel = MessageController.main(message, context.FromQq);
                    // 发送消息
                    string tmpStr = messageModel.SendMessage;
                    if (messageModel.IsAdmin)
                    {
                        // 群数量
                        if (MessageConstant.QUN_TOTAL.Equals(messageModel.Code))
                        {
                            ModelWithSourceString <IEnumerable <GroupInfo> > modelWithSourceString = _mahuaApi.GetGroupsWithModel();
                            IEnumerable <GroupInfo> groupInfo = modelWithSourceString.Model;
                            int count = 0;
                            foreach (var item in groupInfo)
                            {
                                count++;
                            }
                            _mahuaApi.SendGroupMessage(context.FromQq, "群数量:" + count.ToString());
                        }
                        else
                        {
                            if (tmpStr != "" && tmpStr.Length > 0)
                            {
                                sendMessage += tmpStr;
                                _mahuaApi.SendGroupMessage(context.FromQq, sendMessage);
                            }
                        }
                    }
                    else
                    {
                        if (tmpStr != "" && tmpStr.Length > 0)
                        {
                            sendMessage += tmpStr;
                            _mahuaApi.SendGroupMessage(context.FromGroup, sendMessage);
                        }
                    }
                }
            }
        }
        //  private MessageController messageController = new MessageController();
        public void ProcessFriendMessage(PrivateMessageFromFriendReceivedContext context)
        {
            string message = context.Message;

            if (message == "" || message.Length == 0 || message == null)
            {
                return;
            }
            IDatabase redis = RedisHelper.getRedis();

            // 判断用户是否在缓冲中
            if (redis.StringGet(context.FromQq).IsNull)
            {
                redis.StringSet(context.FromQq, "flag");
                redis.KeyExpire(context.FromQq, new TimeSpan(10000000 * Convert.ToInt16(Constants.sleepTime)));
            }
            else
            {
                string tmpStr = "为防止造成刷屏,您每次使用机器人的时间间隔" + Constants.sleepTime + "秒哦!";
                _mahuaApi.SendPrivateMessage(context.FromQq, tmpStr);
                return;
            };
            if (message == null || message == "" || message.Length == 0)
            {
                //
            }
            else
            {
                MessageModel messageModel = MessageController.main(message, context.FromQq);
                string       tmpStr       = messageModel.SendMessage;
                bool         isAdmin      = messageModel.IsAdmin;
                if (isAdmin)
                {
                    // 判断是否为 公告指令
                    if (MessageConstant.GONG_GAO.Equals(messageModel.Code))
                    {
                        // 获取所有群信息
                        ModelWithSourceString <IEnumerable <GroupInfo> > modelWithSourceString = _mahuaApi.GetGroupsWithModel();
                        IEnumerable <GroupInfo> groupInfo = modelWithSourceString.Model;
                        foreach (var item in groupInfo)
                        {
                            _mahuaApi.SendGroupMessage(item.Group, tmpStr);
                            _mahuaApi.SendPrivateMessage(context.FromQq, "【" + item.Name + "】 " + item.Group + " 推送成功!");
                        }
                    }
                    // 判断是否为全体成员处理
                    else if (MessageConstant.AITE_ALL.Equals(messageModel.Code))
                    {
                        // 获取所有群信息
                        ModelWithSourceString <IEnumerable <GroupInfo> > modelWithSourceString = _mahuaApi.GetGroupsWithModel();
                        IEnumerable <GroupInfo> groupInfo = modelWithSourceString.Model;
                        tmpStr = "[CQ:at,qq=all]\n" + tmpStr;
                        foreach (var item in groupInfo)
                        {
                            _mahuaApi.SendGroupMessage(item.Group, tmpStr);
                            _mahuaApi.SendPrivateMessage(context.FromQq, "【" + item.Name + "】 " + item.Group + " 推送成功!");
                        }
                    }
                    // 更新金额
                    else if (MessageConstant.UPDATE_MONEY.Equals(messageModel.Code))
                    {
                        _mahuaApi.SendPrivateMessage(context.FromQq, messageModel.SendMessage);
                    }
                    // 群数量
                    else if (MessageConstant.QUN_TOTAL.Equals(messageModel.Code))
                    {
                        ModelWithSourceString <IEnumerable <GroupInfo> > modelWithSourceString = _mahuaApi.GetGroupsWithModel();
                        IEnumerable <GroupInfo> groupInfo = modelWithSourceString.Model;
                        int count = 0;
                        foreach (var item in groupInfo)
                        {
                            count++;
                        }
                        _mahuaApi.SendPrivateMessage(context.FromQq, "群数量:" + count.ToString());
                    }
                    else
                    {
                        if (tmpStr != "" && tmpStr.Length > 0)
                        {
                            _mahuaApi.SendPrivateMessage(context.FromQq, tmpStr);
                        }
                    }
                }
                else
                {
                    if (tmpStr != "" && tmpStr.Length > 0)
                    {
                        _mahuaApi.SendPrivateMessage(context.FromQq, tmpStr);
                    }
                }
            }
        }
Example #12
0
        /// <summary>
        /// 开始处理
        /// </summary>
        /// <returns></returns>
        public int Run()
        {
            try
            {
                // 全群发送同一条信息
                if (Msg.IndexOf("#全群通知") == 0)
                {
                    if (Sender.QQ == -10000)
                    {
                        IEnumerable <GroupInfo> groups = ExtrasCoolApiExtensions.GetGroupList(MainPlugin.CoolQApi);
                        string Broadcast = Msg.Replace("#全群通知", "");
                        foreach (GroupInfo group in groups)
                        {
                            User system = new User(-100000, new UserSource(UserSource.GroupMessage, new Group(group.GroupNumber), 0));
                            system.Send(Broadcast);
                        }
                        return(1);
                    }
                }

                // 强制回收垃圾
                if (Msg.IndexOf("#回收垃圾") == 0)
                {
                    if (Sender.QQ == 1813274096)
                    {
                        GC.Collect();
                        Sender.Send("void GC.Collect();成功");
                        return(1);
                    }
                }

                // 强制重新载入全部用户
                if (Msg.IndexOf("#重载用户") == 0)
                {
                    if (Sender.QQ == 1813274096)
                    {
                        IEnumerable <GroupInfo> info = ExtrasCoolApiExtensions.GetGroupList(MainPlugin.CoolQApi);
                        int groups = 0, users = 0;
                        foreach (GroupInfo inf in info)
                        {
                            Group gp = new Group(inf.GroupNumber);
                            ModelWithSourceString <IEnumerable <GroupMemberInfo> > members = CoolApiExtensions.GetGroupMemberList(MainPlugin.CoolQApi, inf.GroupNumber);
                            foreach (GroupMemberInfo i in members.Model)
                            {
                                User usr = new User(i.Number, new UserSource(UserSource.GroupMessage, new Group(gp.QQId), 0));
                                users++;
                            }
                            groups++;
                        }
                        GC.Collect();
                        Sender.Send("已经重新载入了" + groups + "个群," + users + "个QQ。");
                        return(1);
                    }
                }

                // 如果被封禁则不处理
                if (Sender.Source.Group != null)
                {
                    if (Sender.Source.Group.IsBaned)
                    {
                        return(1);
                    }
                }
                if (Sender.IsBaned)
                {
                    return(1);
                }
                // 你群如果关了千歌不处理
                if (Sender.Source.Group != null)
                {
                    if (!Sender.Source.Group.IsEnable)
                    {
                        if (rcc(Msg) != "开千歌")
                        {
                            return(1);
                        }
                    }
                }

                // 菜单
                if (Menu.AutoSend(rcc(Msg), Sender) != 0)
                {
                    return(1);
                }

                // 开启千歌
                if (rcc(Msg) == "开千歌")
                {
                    ModelWithSourceString <GroupMemberInfo> info = CoolApiExtensions.GetGroupMemberInfoV2(MainPlugin.CoolQApi, Sender.Source.Group.QQId, Sender.QQ, false);
                    if (info.Model.Authority == "群主" || info.Model.Authority == "管理员" || Sender.QQ == 1813274096)
                    {
                        Sender.Send(Sender.AT + "千歌已开启");
                        Sender.Source.Group.IsEnable = true;
                        return(1);
                    }
                    else
                    {
                        Sender.Send(Sender.AT + "请管理员来进行操作");
                        return(1);
                    }
                }

                // 关闭千歌
                if (rcc(Msg) == "关千歌")
                {
                    ModelWithSourceString <GroupMemberInfo> info = CoolApiExtensions.GetGroupMemberInfoV2(MainPlugin.CoolQApi, Sender.Source.Group.QQId, Sender.QQ, false);
                    if (info.Model.Authority == "群主" || info.Model.Authority == "管理员" || Sender.QQ == 1813274096)
                    {
                        Sender.Send(Sender.AT + "千歌已关闭");
                        Sender.Source.Group.IsEnable = false;
                        return(1);
                    }
                    else
                    {
                        Sender.Send(Sender.AT + "请管理员来进行操作");
                        return(1);
                    }
                }

                // 群状态
                if (Sender.Source.Group != null)
                {
                    if (rcc(Msg) == "群状态")
                    {
                        Status.Auto3(Sender.Source.Group);
                    }
                }

                // 蜜柑商店
                if (MardarinStore.Auto(Sender, rcc(Msg)) != 0)
                {
                    return(1);
                }

                // 小游戏
                if (MiniGame.Auto(Sender, rcc(Msg)) != 0)
                {
                    return(1);
                }

                // 签到
                if (rcc(Msg) == "签到")
                {
                    return(new Checkin(Sender).Check());
                }

                // 抛锦球
                if (ThrowBall.Auto(Sender, rcc(Msg)) == 1)
                {
                    return(1);
                }

                // 状态
                if (rcc(Msg) == "状态")
                {
                    return(Status.Auto(Sender));
                }
                if (rcc(Msg) == "我的状态")
                {
                    return(Status.Auto2(Sender));
                }

                // 档线
                if (rcc(Msg) == "档线")
                {
                    return(Yohane.StopLine.Auto(Sender));
                }

                // 转账
                if (Transfer.Auto(Sender, rcc(Msg)) == 1)
                {
                    return(1);
                }

                // "Sudo"
                if (Sender.QQ == 1813274096)
                {
                    if (rcc(Msg).IndexOf("sudo") == 0)
                    {
                        string[] parm = Msg.Split('|');
                        if (parm.Length >= 3)
                        {
                            int num = 0;
                            int.TryParse(parm[1], out num);
                            Command cmd = new Command(parm[2], new User(num, Sender.Source), TimeStampHelper.ConvertDateTimeInt(DateTime.Now).ToString());
                            return(cmd.Run());
                        }
                    }
                }

                // 抽卡
                if (ScoutSimulator.Msg.Auto(Sender, rcc(Msg)) != 0)
                {
                    return(1);
                }

                // 抽奖
                if (Lottery.Auto(Sender, rcc(Msg)) != 0)
                {
                    return(1);
                }

                // 鸽服号状态
                if (SIF.CN.Status.Auto(Sender, rcc(Msg)) != 0)
                {
                    return(1);
                }

                // 算运势
                if (rcc(Msg) == "算运势")
                {
                    return(Divination.Auto(Sender));
                }

                // 点歌
                if (rcc(Msg).IndexOf("网易点歌") == 0)
                {
                    return(ChooseSong.Choose.Auto(Sender, rcc(Msg)));
                }

                // 算日美ID
                #region

                /*long getRF_id = 0;
                 * if (Msg.Length == 12)
                 * {
                 *  if (long.TryParse(Msg.Replace("算账号",""), out getRF_id) == true)
                 *  {
                 *      getRF_id = getRF_id * 526850996;
                 *      getRF_id = getRF_id % 999999937;
                 *      Sender.Send(Sender.AT + "Uid: " + Msg.Replace("算账号", "") + "\n" +
                 *          "Id: " + getRF_id);
                 *      return 1;
                 *  }
                 *  else
                 *  {
                 *      MessageSendHelper.Send(Sender, " × 计算失败!以下是狗开发的一点人生经验:\n - 不支持国服\n - 文本格式不对\n - 数值转换错误");
                 *      return 1;
                 *  }
                 * }
                 * else
                 * {
                 *  MessageSendHelper.Send(Sender, " × 计算失败!以下是狗开发的一点人生经验:\n - 不支持国服\n - 文本格式不对\n - 未知");
                 *  return 1;
                 * }*/

                #endregion

                // 聊天解析Beta
                if (Chat.Msg.Auto(Sender, Msg) != 0)
                {
                    return(1);
                }
            }
            catch (Exception ex)
            {
                Logger.Log
                    ("Ex:" + ex.Message, Logger.WARN, new long[] { }, 0);
                Sender.Send("ChikaBot Test System\n错误信息 " + ex.Message + "\n错误来源 " + ex.Source + "\n错误堆叠 " + ex.StackTrace);
                //ExceptionReportHelper.Send("消息处理", Sender, ex, Msg);
                //Sender.Send(" × 千歌酱出了一个Bug, 暂时不能陪你玩了...\n   错误类型:" + ex.GetType().ToString());
            }


            return(0);
        }
Example #13
0
        public static int Auto(User Sender, string Msg)
        {
            if (Msg == "抛锦球")
            {
                if (Sender.Source.Group == null)
                {
                    Sender.Send("请在群内使用");
                    return(1);
                }

                if (Sender.RandomBanCard < 1)
                {
                    Sender.Send("锦球卡不足!请购买!\nP.S 你可以在抽奖卡池,积分商店购买到。");
                    return(1);
                }

                Sender.RandomBanCard--;

                ModelWithSourceString <IEnumerable <GroupMemberInfo> > model =
                    CoolApiExtensions.GetGroupMemberList(MainPlugin.CoolQApi, Sender.Source.Group.QQId);

                List <GroupMemberInfo> members = new List <GroupMemberInfo>();

                foreach (GroupMemberInfo info in model.Model)
                {
                    if (info.Authority != "群主")
                    {
                        if (info.Authority != "管理员")
                        {
                            members.Add(info);
                        }
                    }
                }

                long   banQQIndexOfMembers = members[new Random().Next(0, members.Count)].Number;
                int    banTimeBySecond     = new Random().Next(60, 600);
                string banTimeStr          = banTimeBySecond + "s";
                MainPlugin.CoolQApi.SetGroupBan(Sender.Source.Group.QQId, banQQIndexOfMembers, banTimeBySecond);
                User BanUser = new User(banQQIndexOfMembers, Sender.Source);
                Sender.Send("恭喜" + BanUser.AT + "被" + Sender.AT + "砸中!禁言" + banTimeStr + "!");
                return(1);
            }
            else if (Msg.IndexOf("抛锦球") == 0)
            {
                if (Sender.Source.Group == null)
                {
                    Sender.Send("请在群内使用");
                    return(1);
                }

                if (Sender.AtBanCard < 1)
                {
                    Sender.Send("锦球卡不足!请购买!\nP.S 你可以在抽奖卡池,积分商店购买到。");
                    return(1);
                }
                if (Msg.IndexOf("[cq:at,qq=") == -1 && Msg.IndexOf("]") == -1)
                {
                    Sender.Send(Sender.AT + "请@你想禁言谁");
                    return(1);
                }
                string msg   = Msg.Replace("抛锦球", "");
                long   banQQ = 0;
                string obj   = msg.Substring(
                    msg.IndexOf("[cq:at,qq=") + 10,
                    msg.Length - 11 - msg.Substring(msg.IndexOf("]"), msg.Length - msg.IndexOf("]")).Length + 1
                    );
                long.TryParse(obj, out banQQ);
                msg = msg.Replace("[cq:at,qq=" + obj + "]", "");
                if (msg.Replace(" ", "") != "")
                {
                    Sender.Send(Sender.AT + "抛锦球的格式为 /抛锦球[@一个人]\n[@一个人]为选填项");
                    return(1);
                }
                User banUser = new User(banQQ, Sender.Source);
                ModelWithSourceString <GroupMemberInfo> banUserInfo = CoolApiExtensions.GetGroupMemberInfoV2(MainPlugin.CoolQApi, Sender.Source.Group.QQId, banUser.QQ, false);
                if (banUserInfo.Model.Authority == "群主" || banUserInfo.Model.Authority == "管理员")
                {
                    Sender.Send(Sender.AT + "你@的人太强大了,千歌不能砸中他!");
                    return(1);
                }
                Sender.AtBanCard--;
                int banTimeBySecond = new Random().Next(60, 600);
                int sec = 0, min = 0;
                min = (int)(sec / 60);
                sec = sec % 60;
                string banTimeStr = banTimeBySecond + "s";
                MainPlugin.CoolQApi.SetGroupBan(Sender.Source.Group.QQId, banUser.QQ, banTimeBySecond);
                Sender.Send("恭喜" + banUser.AT + "被" + Sender.AT + "砸中!禁言" + banTimeStr + "!");
                return(1);
            }
            else
            {
                return(0);
            }
        }
Example #14
0
        public ModelWithSourceString <IEnumerable <GroupMemberInfo> > GetGroupMemebersWithModel(string toGroup)
        {
            var json = _mpqApi.Api_GetGroupMemberA(_qqSession.CurrentQq, toGroup);

            Logger.Debug(json);
            if (string.IsNullOrEmpty(json))
            {
                return(new ModelWithSourceString <IEnumerable <GroupMemberInfo> >
                {
                    SourceString = json,
                    Model = Enumerable.Empty <GroupMemberInfo>()
                });
            }
            var js = new JavaScriptSerializer
            {
                MaxJsonLength = int.MaxValue
            };
            var infos = js.Deserialize <GroupMemberInfoListJson>(json);

            var re = new ModelWithSourceString <IEnumerable <GroupMemberInfo> >
            {
                SourceString = json,
                Model        = infos.Mems
                               .Select(x => new GroupMemberInfo
                {
                    Group = toGroup,

                    // todo age
                    Age = 0,

                    // todo Area
                    Area      = string.Empty,
                    Authority = x.Role == 3
                            ? GroupMemberAuthority.Leader
                            : x.Role == 2
                                ? GroupMemberAuthority.Manager
                                : GroupMemberAuthority.Normal,

                    // todo CanModifyInGroupName
                    CanModifyInGroupName = false,
                    Gender = !x.G.HasValue
                            ? Gender.Unknow
                            : x.G == GroupMemberSex.Female
                                ? Gender.Female
                                : Gender.Male,

                    // todo CanModifyInGroupName
                    HasBadRecord     = false,
                    InGroupName      = x.Card,
                    JoinTime         = Clock.ConvertSecondsToDateTime(x.Join_time),
                    LastSpeakingTime = Clock.ConvertSecondsToDateTime(x.Last_speak_time),
                    Level            = x.Lv.Level.ToString(),
                    NickName         = x.Nick,
                    Qq = x.Uin.ToString(),

                    // todo SpecialTitle
                    SpecialTitle = string.Empty,

                    // todo TitleExpirationTime
                    TitleExpirationTime = TimeSpan.MinValue
                })
                               .ToArray(),
            };

            return(re);
        }