#nullable disable
namespace NadekoBot.Services;
public interface IStatsService
{
///
/// The author of the bot.
///
string Author { get; }
///
/// The total amount of commands ran since startup.
///
long CommandsRan { get; }
///
/// The amount of messages seen by the bot since startup.
///
long MessageCounter { get; }
///
/// The rate of messages the bot sees every second.
///
double MessagesPerSecond { get; }
///
/// The total amount of text channels the bot can see.
///
long TextChannels { get; }
///
/// The total amount of voice channels the bot can see.
///
long VoiceChannels { get; }
///
/// Gets for how long the bot has been up since startup.
///
TimeSpan GetUptime();
///
/// Gets a formatted string of how long the bot has been up since startup.
///
/// The formatting separator.
string GetUptimeString(string separator = ", ");
///
/// Gets total amount of private memory currently in use by the bot, in Megabytes.
///
double GetPrivateMemoryMegabytes();
GuildInfo GetGuildInfoAsync(string name);
Task GetGuildInfoAsync(ulong id);
}
public record struct GuildInfo
{
public required string Name { get; init; }
public required string IconUrl { get; init; }
public required string Owner { get; init; }
public required ulong OwnerId { get; init; }
public required ulong Id { get; init; }
public required int TextChannels { get; init; }
public required int VoiceChannels { get; init; }
public required DateTime CreatedAt { get; init; }
public required IReadOnlyList Features { get; init; }
public required IReadOnlyList Emojis { get; init; }
public required IReadOnlyList Roles { get; init; }
public int MemberCount { get; init; }
}