namespace BotPages.Core { /// /// In-memory реализация хранилища состояния для прототипирования. /// public sealed class InMemoryStateStore : IStateStore { private readonly Dictionary<(string chatClientId, long userId), UserState> _store = new(); /// /// Получает состояние пользователя, создавая новое при отсутствии. /// public Task GetAsync(string chatClientId, long userId, CancellationToken ct) { if (!_store.TryGetValue((chatClientId, userId), out var st)) { st = new UserState { UserId = userId, ChatClientId = chatClientId, }; _store[(chatClientId, userId)] = st; } return Task.FromResult(st); } /// /// Сохраняет состояние пользователя. /// public Task SaveAsync(UserState state, CancellationToken ct) { _store[(state.ChatClientId, state.UserId)] = state; return Task.CompletedTask; } } }