示例#1
0
        /// <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);
        }
示例#2
0
        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);
        }