#nullable enable using System; using System.Threading.Tasks; using BotFramework; using BotFramework.Attributes; using BotFramework.Enums; using BotFramework.Utils; using Kruzya.TelegramBot.Core.Data; using Kruzya.TelegramBot.Core.Extensions; using Kruzya.TelegramBot.Core.Service; using Microsoft.Extensions.Logging; using Telegram.Bot; using Telegram.Bot.Types.Enums; namespace West.Entertainment.Handler; public class Common : BotEventHandler { private readonly UserService _userService; private readonly ILogger _logger; private readonly CoreContext _db; public Common(CoreContext db, ILogger logger, UserService userService) { _db = db; _logger = logger; _userService = userService; } [InChat(InChat.Public)] [Command("cooldowns", CommandParseMode.Both)] public async Task HandleCooldowns() { if (!_userService.IsUserSuper(From)) { _logger.LogWarning("{User} attempted to use super-user command /cooldowns in {Chat}", From.ToLog(), Chat.ToLog() ); return; } var cds = new[] { "python", "javascript", "golang" }; var msg = new HtmlString().Bold("Кулдауны:").Br(); foreach (var cd in cds) { var opt = await _db.UserValues.FindOrCreateOption(Chat.Id, $"{cd}NextUse"); var val = opt.GetValue(); if (val == default) { continue; } msg.Text($"{cd}: ") .Code(DateTime.Now > val ? "Ready" : (val - DateTime.Now).ToString()) .Br(); } await Bot.SendTextMessageAsync(Chat.Id, msg.ToString(), parseMode: ParseMode.Html); } }