예제 #1
0
        public bool Reborn(MsgInformationEx MsgDTO, object[] param)
        {
            var aimQQ = (long)param[0];

            var cache = AliveStateSvc.GetState(MsgDTO.FromGroup, aimQQ);

            if (cache == null)
            {
                MsgSender.PushMsg(MsgDTO, "该成员不需要复活!", true);
                return(false);
            }

            if (!WaiterSvc.WaitForConfirm_Gold(MsgDTO, 100))
            {
                MsgSender.PushMsg(MsgDTO, "操作取消!");
                return(false);
            }

            var osPerson = OSPerson.GetPerson(MsgDTO.FromQQ);

            osPerson.Golds -= 100;
            osPerson.Update();

            cache.RebornTime = DateTime.Now;
            AliveStateSvc.Cache(cache);

            MsgSender.PushMsg(MsgDTO, $"复活成功!你当前剩余金币:{osPerson.Golds}", true);
            return(true);
        }
예제 #2
0
        private void DoSkill(MsgInformationEx MsgDTO, long aimQQ, DateTime rebornTime, string skillName)
        {
            var cache = new AliveStateCache
            {
                QQNum      = aimQQ,
                GroupNum   = MsgDTO.FromGroup,
                Name       = skillName,
                RebornTime = rebornTime
            };

            AliveStateSvc.Cache(cache);

            MsgSender.PushMsg(MsgDTO, $"成功对 {CodeApi.Code_At(aimQQ)} 使用了 {skillName}!他将于 {rebornTime.ToString(CultureInfo.CurrentCulture)} 后复活!");
        }
예제 #3
0
        private bool StateCheck(MsgInformationEx MsgDTO)
        {
            if (MsgDTO.Type != MsgType.Group)
            {
                return(true);
            }

            if (MsgDTO.IsAlive)
            {
                return(true);
            }

            var stateCache = AliveStateSvc.GetState(MsgDTO.FromGroup, MsgDTO.FromQQ);

            MsgSender.PushMsg(MsgDTO, $"你已经死了({stateCache.Name})!复活时间:{stateCache.RebornTime:yyyy-M-d H:m:s}", true);
            return(false);
        }
예제 #4
0
        public override bool OnMsgReceived(MsgInformationEx MsgDTO)
        {
            if (base.OnMsgReceived(MsgDTO))
            {
                return(true);
            }

            FiltPicMsg(MsgDTO);

            if (MsgDTO.Type == MsgType.Private)
            {
                return(false);
            }

            MsgDTO.IsAlive = AliveStateSvc.GetState(MsgDTO.FromGroup, MsgDTO.FromQQ) == null;

            return(!GroupSettingSvc[MsgDTO.FromGroup].IsPowerOn);
        }
예제 #5
0
        private bool SkillCheck(MsgInformationEx MsgDTO, long aimQQ)
        {
            if (MsgDTO.FromQQ == aimQQ)
            {
                MsgSender.PushMsg(MsgDTO, "你无法对自己使用该能力!", true);
                return(false);
            }

            var cache = AliveStateSvc.GetState(MsgDTO.FromGroup, MsgDTO.FromQQ);

            if (cache == null)
            {
                return(true);
            }

            MsgSender.PushMsg(MsgDTO, $"他已经死了,你不能对尸体使用该能力!请于 {cache.RebornTime.ToString(CultureInfo.CurrentCulture)} 后再试!", true);
            return(false);
        }
예제 #6
0
파일: TulingAI.cs 프로젝트: Dolany/DolanyAI
        public override bool OnMsgReceived(MsgInformationEx MsgDTO)
        {
            if (base.OnMsgReceived(MsgDTO))
            {
                return(true);
            }

            if (MsgDTO.Type == MsgType.Group)
            {
                var bindAi = BindAiSvc.AiDic.Values.FirstOrDefault(p => MsgDTO.FullMsg.Contains(CodeApi.Code_At(p.SelfNum)));
                if (bindAi == null)
                {
                    return(false);
                }

                MsgDTO.BindAi = bindAi.Name;
            }

            var stateCache = AliveStateSvc.GetState(MsgDTO.FromGroup, MsgDTO.FromQQ);

            if (stateCache != null)
            {
                MsgSender.PushMsg(MsgDTO, $"你已经死了({stateCache.Name})!复活时间:{stateCache.RebornTime:yyyy-MM-dd HH:mm:ss}", true);
                return(false);
            }

            var limitRecord = DailyLimitRecord.Get(MsgDTO.FromQQ, "Tuling");

            if (!limitRecord.Check(TulingDailyLimit))
            {
                MsgSender.PushMsg(MsgDTO, "今天太累了,明天再找我说话吧~", MsgDTO.Type == MsgType.Group);
                return(false);
            }
            limitRecord.Cache();
            limitRecord.Update();

            foreach (var aiNum in BindAiSvc.AllAiNums)
            {
                MsgDTO.FullMsg = MsgDTO.FullMsg.Replace(CodeApi.Code_At(aiNum), string.Empty);
            }

            string response = null;

            foreach (var tuling in ApiKeys.Select(_ => ApiKeys[CurTulingIndex]))
            {
                response = RequestMsg(MsgDTO, tuling.ApiKey);
                if (!string.IsNullOrEmpty(response))
                {
                    break;
                }

                CurTulingIndex = (CurTulingIndex + 1) % ApiKeys.Count;
            }

            if (string.IsNullOrEmpty(response))
            {
                MsgSender.PushMsg(MsgDTO, "今天太累了,明天再找我说话吧~", MsgDTO.Type == MsgType.Group);
                return(false);
            }

            AIAnalyzer.AddCommandCount(new CmdRec()
            {
                FunctionalAi = AIName,
                Command      = "TulingOverride",
                GroupNum     = MsgDTO.FromGroup,
                BindAi       = MsgDTO.BindAi
            });
            MsgSender.PushMsg(MsgDTO, response, MsgDTO.Type == MsgType.Group);
            return(true);
        }