Files
telegram-bot/modules/Entertainment/Handler/Common.cs
T

81 lines
2.6 KiB
C#
Raw Normal View History

2022-01-04 17:45:06 +02:00
#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;
2023-07-20 20:24:16 +03:00
using West.Entertainment.Options;
2022-01-04 17:45:06 +02:00
namespace West.Entertainment.Handler
{
public class Common : BotEventHandler
{
private readonly UserService _userService;
2023-07-20 20:24:16 +03:00
private readonly NsfwOption _nsfwOption;
2022-01-04 17:45:06 +02:00
private readonly ILogger _logger;
private readonly CoreContext _db;
2023-07-20 20:24:16 +03:00
public Common(CoreContext db, ILogger<Common> logger, UserService userService, NsfwOption nsfwOption)
2022-01-04 17:45:06 +02:00
{
_db = db;
_logger = logger;
_userService = userService;
2023-07-20 20:24:16 +03:00
_nsfwOption = nsfwOption;
2022-01-04 17:45:06 +02:00
}
[Command(InChat.Public, "cooldowns", CommandParseMode.Both)]
public async Task HandleCooldowns()
{
if (!_userService.IsUserSuper(From))
{
2022-12-14 12:58:12 +02:00
_logger.LogWarning("{User} attempted to use super-user command /cooldowns in {Chat}",
From.ToLog(),
Chat.ToLog()
);
2022-01-04 17:45:06 +02:00
return;
}
var cds = new[] { "python", "javascript" };
var msg = new HtmlString().Bold("Кулдауны:").Br();
foreach (var cd in cds)
{
2022-01-07 22:30:28 +02:00
var opt = await _db.UserValues.FindOrCreateOption(Chat.Id, $"{cd}NextUse");
2022-01-04 17:45:06 +02:00
var val = opt.GetValue<DateTime>();
if (val == default)
{
continue;
}
msg.Text($"{cd}: ")
.Code(DateTime.Now > val ? "Ready" : (val - DateTime.Now).ToString())
2022-01-04 17:45:06 +02:00
.Br();
}
2023-01-02 19:01:03 +02:00
await Bot.SendTextMessageAsync(Chat.Id, msg.ToString(), parseMode: ParseMode.Html);
2022-01-04 17:45:06 +02:00
}
2023-07-20 20:24:16 +03:00
[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)}");
}
2022-01-04 17:45:06 +02:00
}
}