Beispiel #1
0
 public static async Task Run(CommandParser.Default args, MiraiHttpSession session, IGroupMessageEventArgs e)
 {
     if (args.Next)
     {
         await GetNext(args, session, e);
     }
     else if (args.Today)
     {
         await GetToday(args, session, e);
     }
 }
Beispiel #2
0
        private static async Task GetToday(CommandParser.Default args, MiraiHttpSession session, IGroupMessageEventArgs e)
        {
            using var reader = new StreamReader($@"{Config.RootPath}\Users\{e.Sender.Id}\calender.json");
            string calenderstr = await reader.ReadToEndAsync();

            Response response = null;

            try
            { response = JsonConvert.DeserializeObject <Response>(calenderstr); }
            catch (Exception ex)
            { await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage($"发生了错误:{ex.Message}")); }
            var calender = response.data;
            var today    = DateTime.Now.AddDays(args.DaysAfter);
            var courses  = calender
                           .Where(c => c.teachingWeek != null &&
                                  c.teachingWeek.PadRight(30, '0')[(int)((today - new DateTime(2021, 3, 1)).TotalDays / 7)] == '1' &&
                                  c.weekDay == ((int)today.DayOfWeek).ToString());

            if (courses.Any())
            {
                await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage($"您{(args.DaysAfter == 0 ? "今天" : $"{args.DaysAfter}天后")}的课程列表如下:\r\n{courses.Aggregate("", (lhs, rhs) => lhs + "\r\n" + CourseMessageSender(args, rhs).GetAwaiter().GetResult())}"));
            }
Beispiel #3
0
        private static async Task GetNext(CommandParser.Default args, MiraiHttpSession session, IGroupMessageEventArgs e)
        {
            using var reader = new StreamReader($@"{Config.RootPath}\Users\{e.Sender.Id}\calender.json");
            string calenderstr = await reader.ReadToEndAsync();

            Response response = null;

            try
            { response = JsonConvert.DeserializeObject <Response>(calenderstr); }
            catch (Exception ex)
            { await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage($"发生了错误:{ex.Message}")); }
            var calender = response.data;
            var now      = DateTime.Now;
            int period   = 0;

            switch (now.TimeOfDay)
            {
            case TimeSpan s when s < new TimeSpan(8, 30, 0):
                period = 0;
                break;

            case TimeSpan s when s < new TimeSpan(9, 25, 0):
                period = 1;
                break;

            case TimeSpan s when s < new TimeSpan(10, 30, 0):
                period = 2;
                break;

            case TimeSpan s when s < new TimeSpan(11, 25, 0):
                period = 3;
                break;

            case TimeSpan s when s < new TimeSpan(13, 30, 0):
                period = 4;
                break;

            case TimeSpan s when s < new TimeSpan(14, 25, 0):
                period = 5;
                break;

            case TimeSpan s when s < new TimeSpan(15, 20, 0):
                period = 6;
                break;

            case TimeSpan s when s < new TimeSpan(16, 25, 0):
                period = 7;
                break;

            case TimeSpan s when s < new TimeSpan(17, 20, 0):
                period = 8;
                break;

            case TimeSpan s when s < new TimeSpan(19, 0, 0):
                period = 9;
                break;

            case TimeSpan s when s < new TimeSpan(19, 55, 0):
                period = 10;
                break;

            case TimeSpan s when s < new TimeSpan(20, 50, 0):
                period = 11;
                break;

            case TimeSpan s when s < new TimeSpan(21, 35, 0):
                period = 12;
                break;
            }
            var courses = calender
                          .Where(c => c.period != null && c.teachingWeek != null &&
                                 c.teachingWeek.PadRight(30, '0')[(int)((now - new DateTime(2021, 3, 1)).TotalDays / 7)] == '1' &&
                                 (period == 0 || c.period.PadRight(12, '0')[period - 1] == '0') &&
                                 c.period.PadRight(12, '0')[period..]
                                 .Any(s => s == '1') &&
                                 c.weekDay == ((int)now.DayOfWeek).ToString())
                          .ToArray();

            Array.Sort(courses, (lhs, rhs) => rhs.period.PadRight(12, '0').CompareTo(lhs.period.PadRight(12, '0')));

            if (courses.Length != 0)
            {
                await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage($"您的下一节课是:\r\n{await CourseMessageSender(args, courses[0])}"));
            }
            else
            {
                await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage($"您今天已经没有课了哦~"));
            }
        }