geekbot/Geekbot.net/Commands/User/GuildInfo.cs

60 lines
2 KiB
C#
Raw Normal View History

using System;
2017-09-15 22:56:03 +02:00
using System.Linq;
using System.Threading.Tasks;
using Discord;
2017-09-15 22:56:03 +02:00
using Discord.Commands;
2018-05-11 00:36:29 +02:00
using Geekbot.net.Database;
using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
2018-05-11 00:36:29 +02:00
using Geekbot.net.Lib.Extensions;
using Geekbot.net.Lib.Levels;
namespace Geekbot.net.Commands.User
{
public class GuildInfo : ModuleBase
{
private readonly IErrorHandler _errorHandler;
2018-05-11 00:36:29 +02:00
private readonly DatabaseContext _database;
2017-12-29 01:53:50 +01:00
private readonly ILevelCalc _levelCalc;
2017-09-15 22:56:03 +02:00
2018-05-11 00:36:29 +02:00
public GuildInfo(DatabaseContext database, ILevelCalc levelCalc, IErrorHandler errorHandler)
{
2018-05-11 00:36:29 +02:00
_database = database;
_levelCalc = levelCalc;
_errorHandler = errorHandler;
}
2017-09-15 22:56:03 +02:00
[Command("serverstats", RunMode = RunMode.Async)]
2017-10-12 16:34:10 +02:00
[Remarks(CommandCategories.Statistics)]
2017-09-15 22:56:03 +02:00
[Summary("Show some info about the bot.")]
2018-04-30 23:44:19 +02:00
public async Task GetInfo()
{
try
{
var eb = new EmbedBuilder();
eb.WithAuthor(new EmbedAuthorBuilder()
.WithIconUrl(Context.Guild.IconUrl)
.WithName(Context.Guild.Name));
eb.WithColor(new Color(110, 204, 147));
var created = Context.Guild.CreatedAt;
var age = Math.Floor((DateTime.Now - created).TotalDays);
2018-05-11 00:36:29 +02:00
var messages = _database.Messages
.Where(e => e.GuildId == Context.Guild.Id.AsLong())
.Sum(e => e.MessageCount);
var level = _levelCalc.GetLevel((int) messages);
eb.AddField("Server Age", $"{created.Day}/{created.Month}/{created.Year} ({age} days)");
eb.AddInlineField("Level", level)
.AddInlineField("Messages", messages);
await ReplyAsync("", false, eb.Build());
}
catch (Exception e)
{
_errorHandler.HandleCommandException(e, Context);
}
}
}
2017-04-25 20:59:38 +02:00
}