using System.Linq; using System.Text; using System.Threading.Tasks; using BotFramework.Attributes; using Kruzya.TelegramBot.RichSiteSummary.Data; using Microsoft.EntityFrameworkCore; using Telegram.Bot; using Telegram.Bot.Types.Enums; namespace Kruzya.TelegramBot.RichSiteSummary.Handler; public class StatsHandler : AbstractHandler { public StatsHandler(RichSiteSummaryContext dbContext) : base(dbContext) { } [Command("rss_stats")] public async Task Execute() { var feedCount = await _dbContext.Feeds.CountAsync(); var postsCount = await _dbContext.Posts.CountAsync(); var subscriptionsCount = await _dbContext.Subscriptions.CountAsync(); var uniqueSubscribers = await _dbContext.Subscriptions.Select(sub => sub.SubscriberId).Distinct().CountAsync(); var textMessage = new StringBuilder(); textMessage.Append("ℹ️ In database on this moment:\n"); textMessage.Append($"- registered {feedCount} feeds\n"); textMessage.Append($"- saved {postsCount} posts for prevent re-sending\n"); textMessage.Append( $"- exists {subscriptionsCount} subscriptions on feeds (unique subscribers: {uniqueSubscribers})"); await Bot.SendTextMessageAsync(Chat, textMessage.ToString(), parseMode: ParseMode.Html); } }