/// <summary> /// 取得起訖時間 /// </summary> /// <param name="now"></param> /// <returns></returns> private (DateTime startDateTime, DateTime endDateTime) GetSpan(DateTime now, ReportEnum report) { this._logger.LogInformation("report:{0}", report.ToString()); DateTime start = DateTime.MinValue; DateTime end = DateTime.MinValue; if (report == ReportEnum.Weekly) { //// 星期一 var week = (int)now.DayOfWeek; end = now.AddDays(-week); start = end.AddDays(-7); end = new DateTime(end.Year, end.Month, end.Day, 23, 59, 59); } else if (report == ReportEnum.Monthly) { //// 每月 1號 start = now.AddMonths(-1); start = new DateTime(start.Year, start.Month, 1); var endDay = DateTime.DaysInMonth(start.Year, start.Month); end = new DateTime(start.Year, start.Month, endDay, 23, 59, 59); } else if (report == ReportEnum.Quarterly) { //// 1, 4, 7, 10月 1號 var mod = now.Month % 3; mod = (mod == 0) ? 3 : mod; end = now.AddMonths(-mod); start = end.AddMonths(-2); start = new DateTime(start.Year, start.Month, 1); var endDay = DateTime.DaysInMonth(end.Year, end.Month); end = new DateTime(end.Year, end.Month, endDay, 23, 59, 59); } else if (report == ReportEnum.Yearly) { //// 1月 1號 start = now.AddYears(-1); start = new DateTime(start.Year, 1, 1); end = new DateTime(start.Year, 12, 31, 23, 59, 59); } this._logger.LogInformation("Time: {0} ~ {1}", report, start, end); return(startDateTime : start, endDateTime : end); }
public static async Task SendReport(string msg, ReportEnum type) { var embedBuilder = new EmbedBuilder() .WithTitle(type.ToString()) .WithDescription(msg); var log = Client.GetChannel(logChannel) as SocketTextChannel; switch (type) { case ReportEnum.ERROR: embedBuilder.WithColor(Color.Orange); break; case ReportEnum.GUILD_JOIN: embedBuilder.WithColor(Color.Green); break; case ReportEnum.GUILD_LEFT: embedBuilder.WithColor(Color.Red); break; case ReportEnum.KONNONEWS: embedBuilder.WithColor(Color.Blue); break; case ReportEnum.USER_BANNED_FROM_GUILD: embedBuilder.WithColor(Color.Red); break; case ReportEnum.LOG: embedBuilder.WithColor(Color.DarkGreen); break; } var embed = embedBuilder.Build(); Console.WriteLine(msg); await log.SendMessageAsync(embed : embed).ConfigureAwait(false); }