#nullable enable using System.Threading.Tasks; using Kruzya.TelegramBot.Core.Data; using Kruzya.TelegramBot.Core.Extensions; using Telegram.Bot.Types; namespace West.TelegramBot.ChatManagement.Service; public class RulesService { private readonly CoreContext _db; public RulesService(CoreContext db) { _db = db; } public async Task GetRulesOptionAsync(Chat chat) { return await _db.UserValues.FindOption(chat.Id, "rulesMsgId"); } public async Task GetRulesMessageIdAsync(Chat chat) { return (await GetRulesOptionAsync(chat))?.GetValue(); } public async Task HasRulesAsync(Chat chat) { return await GetRulesMessageIdAsync(chat) != null; } public async Task SetRulesAsync(Chat chat, int messageId) { var option = await GetRulesOptionAsync(chat) ?? _db.UserValues.Create(); option.SetValue(messageId); _db.AddOrUpdate(option); } public async Task RemoveChatRulesAsync(Chat chat) { var option = await GetRulesOptionAsync(chat); if (option == null) { return; } _db.Remove(option); } }