#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; using West.Entertainment.Options; namespace West.Entertainment.Handler { public class Common : BotEventHandler { private readonly UserService _userService; private readonly NsfwOption _nsfwOption; private readonly ILogger _logger; private readonly CoreContext _db; public Common(CoreContext db, ILogger logger, UserService userService, NsfwOption nsfwOption) { _db = db; _logger = logger; _userService = userService; _nsfwOption = nsfwOption; } [Command(InChat.Public, "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" }; 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); } [Command("test_option_get")] public async Task HandleTestOptionGet() { await Bot.SendTextMessageAsync(Chat.Id, $"nsfw option is: {await _nsfwOption.GetValueAsync(Chat.Id)}"); } [Command("test_option_set")] public async Task HandleTestOptionSet() { var value = await _nsfwOption.GetValueAsync(Chat.Id); await _nsfwOption.SetValueAsync(Chat.Id, !value); await Bot.SendTextMessageAsync(Chat.Id, $"nsfw option is: {await _nsfwOption.GetValueAsync(Chat.Id)}"); } } }