Beispiel #1
0
        public async Task UptimeAsync()
        {
            var channel = Context.Channel;
            var user    = Context.User;
            await Context.Message.DeleteAsync();

            TimeSpan last       = Cooldowns.GetUptimeLast();
            TimeSpan current    = DateTime.Now.TimeOfDay;
            double   difference = current.TotalSeconds - last.TotalSeconds;

            TimeSpan uptimeTime = DateTime.Now.TimeOfDay - Cooldowns.GetStartupTime();
            int      startHours = uptimeTime.Hours;

            if (startHours < 0)
            {
                startHours = startHours + 24;
            }
            int startMinutes = uptimeTime.Minutes;
            int startSeconds = uptimeTime.Seconds;

            int startDays = DateTime.Now.Date.Day - Cooldowns.GetStartupDate().Day;

            if (startDays < 0)
            {
                startDays = ((startDays - startDays) - startDays);
                int startMonth     = Cooldowns.GetStartupDate().Month;
                int startYear      = Cooldowns.GetStartupDate().Year;
                int maxDaysInMonth = DateTime.DaysInMonth(startYear, startMonth);
                int extraDays      = maxDaysInMonth - Cooldowns.GetStartupDate().Day;
                startDays = startDays + extraDays;
            }

            if (difference >= Cooldowns.GetCommandCooldown() || difference < 0)
            {
                var embed = new EmbedBuilder()
                {
                    Color = Colours.generalCol
                };
                var blankField = new EmbedFieldBuilder()
                {
                    Name = "\u200b", Value = "\u200b"
                };
                embed.WithAuthor("Bot Uptime and Statistics", References.GetGta5policeLogo());
                embed.WithDescription("Here are all the statistics since last startup.\n**Teamspeak IP: gta5police.com**");
                embed.WithThumbnailUrl(References.GetGta5policeLogo());
                embed.WithUrl("http://www.blurrdev.com/gta5police.html");
                //embed.AddField(new EmbedFieldBuilder() { Name = "Bot Uptime", Value = DateTime.Now.TimeOfDay - Cooldowns.GetStartupTime() });
                embed.AddField(new EmbedFieldBuilder()
                {
                    Name = "Bot Uptime", Value = "Days: " + startDays + " | Hours: " + startHours + " | Minutes: " + startMinutes + " | Seconds: " + startSeconds
                });
                embed.AddField(new EmbedFieldBuilder()
                {
                    Name = "Incoming Messages", Value = Statistics.GetIncomingMessages(), IsInline = true
                });
                embed.AddField(new EmbedFieldBuilder()
                {
                    Name = "Outgoing Messages", Value = Statistics.GetOutgoingMessages(), IsInline = true
                });
                embed.AddField(new EmbedFieldBuilder()
                {
                    Name = "Command Requests", Value = Statistics.GetCommandRequests(), IsInline = true
                });
                embed.AddField(new EmbedFieldBuilder()
                {
                    Name = "Admen Requests", Value = Statistics.GetAdmenRequests(), IsInline = true
                });
                embed.AddField(new EmbedFieldBuilder()
                {
                    Name = "Oofers", Value = Statistics.GetOofMessages(), IsInline = true
                });
                embed.AddField(new EmbedFieldBuilder()
                {
                    Name = "Meta Messages", Value = Statistics.GetMetaMessages(), IsInline = true
                });
                embed.AddField(blankField);
                embed.AddField(new EmbedFieldBuilder()
                {
                    Name = "Profanity Detected", Value = Statistics.GetProfanityDetected(), IsInline = true
                });
                embed.AddField(new EmbedFieldBuilder()
                {
                    Name = "Errors Detected", Value = Statistics.GetErrorsDetected(), IsInline = true
                });
                embed.AddField(new EmbedFieldBuilder()
                {
                    Name = "Timer Messages", Value = Statistics.GetTimerMessages(), IsInline = true
                });
                embed.AddField(new EmbedFieldBuilder()
                {
                    Name = "Status Changes", Value = Statistics.GetStatusChanges(), IsInline = true
                });
                embed.WithFooter("Requested by " + Context.User);
                embed.WithCurrentTimestamp();

                var message = await Context.Channel.SendMessageAsync("", false, embed);

                await Delete.DelayDeleteEmbedAsync(message, (int)Cooldowns.GetCommandCooldown());

                await Program.Logger(new LogMessage(LogSeverity.Info, "GTA5Police Commands", "Uptime command was used by " + user + "."));

                Cooldowns.SetUptimeLast(current);
                Statistics.AddOutgoingMessages();
            }
            else
            {
                await errors.sendErrorTempAsync(channel, user + errorMessage + "\nCooldown " + difference + "/" + Cooldowns.GetCommandCooldown() + " seconds", Colours.errorCol);
            }
        }