/// <summary>
        /// 更新指定学生的成绩信息 失败将抛出异常
        /// </summary>
        /// <param name="StuQQ">学生QQ</param>
        /// <returns>新成绩列表</returns>
        public static List <Score> UpdateScore(string StuQQ)
        {
            QQ     BotQQ        = CQ.Api.GetLoginQQ();
            string AppDirectory = CQ.Api.AppDirectory;
            string StuID;
            string Pw;

            if (ini.Read(AppDirectory + @"\配置.ini", "主人信息", "QQ", "") == StuQQ)  //是主人
            {
                StuID = ini.Read(AppDirectory + @"\配置.ini", "主人信息", "学号", "");
                Pw    = DESTool.Decrypt(ini.Read(AppDirectory + @"\配置.ini", "主人信息", "教务系统密码", ""), "jw*1");
            }
            else
            {
                StuID = ini.Read(AppDirectory + @"\配置.ini", StuQQ, "学号", "");
                Pw    = DESTool.Decrypt(ini.Read(AppDirectory + @"\配置.ini", StuQQ, "密码", ""), "jw*1");
            }

            if (StuID == "" || Pw == "")
            {
                throw new UpdataErrorException("当前QQ未绑定教务系统账户。");
            }
            EasLogin jwxt = new EasLogin(Convert.ToString(BotQQ.Id), StuQQ, StuID, Pw, 3);

            try
            {
                if (jwxt.TryLogin() == true)
                {
                    EasGetNewScore jwscore = new EasGetNewScore();
                    return(jwscore.GetNewScore(jwxt));
                }
                else
                {
                    return(new List <Score>());   //空列表
                }
            }
            catch (Exception ex)
            {
                if (ex.Message == "用户名/密码错误")
                {
                    throw new UpdataErrorException("用户名或密码错误。");
                }
                else if (ex.Message == "验证码错误")
                {
                    throw new UpdataErrorException("验证码错误达到上限,请稍后再试。");
                }
                else
                {
                    CQ.Log.Error("发生错误", "错误信息:" + ex.GetType().ToString() + " " + ex.Message + "\n" + ex.StackTrace);
                    throw new UpdataErrorException("发生未知错误,请联系机器人主人。");
                }
            }
        }
        void IJob.Execute()
        {
            BotQQ = CQ.Api.GetLoginQQ();

            string AppDirectory = CQ.Api.AppDirectory;
            string QQ           = ini.Read(AppDirectory + @"\配置.ini", "主人信息", "QQ", "");
            string StuID        = ini.Read(AppDirectory + @"\配置.ini", "主人信息", "学号", "");
            string Pw           = ini.Read(AppDirectory + @"\配置.ini", "主人信息", "教务系统密码", "");

            if (QQ == "" || StuID == "" || Pw == "")
            {
                CQ.Log.Warning("成绩提醒模块", "本人部分信息为空,提醒任务已停止。");
                JobManager.Stop();
                JobManager.RemoveAllJobs();
            }

            CQ.Log.Debug("成绩提醒模块", "检测运行中……");

            Pw = DESTool.Decrypt(Pw, "jw*1");
            EasLogin jwxt = new EasLogin(Convert.ToString(BotQQ.Id), QQ, StuID, Pw, 3);

            try
            {
                if (jwxt.TryLogin() == true)
                {
                    CQ.Log.Debug("成绩提醒模块", "登录成功");
                    EasGetNewScore jwscore = new EasGetNewScore();
                    var            sList   = jwscore.GetNewScore(jwxt);
                    if (sList.Count != 0)
                    {
                        foreach (var s in sList)
                        {
                            CQ.Api.SendPrivateMessage(Convert.ToInt64(QQ), "【新出成绩】\n课程:", s.LessonName, "\n成绩:", s.Mark);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                CQ.Log.Warning("成绩提醒模块", "本次检测发生了错误,任务已停止。\n错误信息:" + ex.Message);
                JobManager.Stop();
                JobManager.RemoveAllJobs();
            }
        }
        public void GetScore(EasLogin jwxt)
        {
            stuid = jwxt.StuID;
            var client  = new RestClient(jwxt.urls.score_url);
            var request = new RestRequest(Method.GET);

            request.AddHeader("Host", "bkjw.whu.edu.cn");
            request.AddHeader("Connection", "keep-alive");
            request.AddHeader("Upgrade-Insecure-Requests", "1");
            request.AddHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36");
            request.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
            request.AddHeader("Accept-Language", "zh-CN,zh;q=0.9");
            request.AddHeader("Referer", "http://bkjw.whu.edu.cn/stu/stu_score_parent.jsp?index=0");
            request.AddCookie(jwxt.urls.Cookie.Name, jwxt.urls.Cookie.Value);
            var response          = client.Execute(request);
            var score_result_byte = response.RawBytes;

            score_result = Encoding.GetEncoding("GB2312").GetString(score_result_byte);
            //Console.WriteLine(score_result);
            ProcessScore();
        }