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); } }