Example #1
0
        private static async System.Threading.Tasks.Task <bool> Session_FriendMessageEvt(MiraiHttpSession sender, IFriendMessageEventArgs e)
        {
            string msg             = GetStringMessage(e.Chain);
            bool   regNewProcedure = true;

            if (procedures.ContainsKey(e.Sender.Id))
            {
                if (procedures[e.Sender.Id].IsFinished)
                {
                    procedures.Remove(e.Sender.Id);
                }
                else
                {//Procedure仍在继续
                    regNewProcedure = false;
                    Procedure.Procedure.WriteLine(e.Sender.Id, msg);
                }
            }
            if (regNewProcedure)
            {
                switch (msg)
                {
                case "RESET":
                {
                    lock (SignQueueHandler.queue)
                    {
                        foreach (User u in SignQueueHandler.queue.Values)
                        {
                            u.cli.lastUpdate = 0;
                        }
                    }
                }
                break;

                case "自动签到":
                    Procedure.SetupAccount proc = new Procedure.SetupAccount(e.Sender.Id, session);
                    procedures.Add(e.Sender.Id, proc);
                    new Thread(new ThreadStart(proc.Main)).Start();
                    break;

                case "TD":
                    SignQueueHandler.RemoveAccount(e.Sender.Id);
                    break;

                case "CHECK":
                case "检查":
                case "复核":
                case "复查":
                    await session.SendFriendMessageAsync(e.Sender.Id,
                                                         new PlainMessage("好的,我会再次检查您的签到列表。"));

                    SignQueueHandler.ReCheckUser(e.Sender.Id);
                    break;

                case "谁没签到":
                    try
                    {
                        Console.WriteLine("[" + e.Sender.Id + "] 正在执行签到查询...");
                        await session.SendFriendMessageAsync(e.Sender.Id, new PlainMessage(
                                                                 "稍等,我查一下..."
                                                                 ));

                        List <int> unsignList  = new List <int>();
                        string     unsignedStr = "";
                        for (int i = 208200601; i <= 208200641; i++)
                        {
                            var data = AnonymousData.AnalyzeSignListFor(i, e.Sender.Id);
                            if (data.AviUnsigned > 0)
                            {
                                unsignedStr += i.ToString() + ",";
                                unsignList.Add(i);
                            }
                            Thread.Sleep(new Random().Next(500, 1000));
                        }
                        Console.Write("[" + e.Sender.Id + "] 查好了,");
                        if (unsignList.Count == 0)
                        {
                            Console.WriteLine("所有人都签了");
                            await session.SendFriendMessageAsync(e.Sender.Id, new PlainMessage(
                                                                     "除过期签到外,所有人都签到了"
                                                                     ));
                        }
                        else
                        {
                            unsignedStr = unsignedStr[0..^ 1];