public Option <IGuildUser> Get(ulong userId, ulong guildId) { var user = (IGuildUser)_client.GetGuild(guildId).GetUser(userId); if (user != null) { return(Option.Some(user)); } var userM = _cacheService.Get <IGuildUser>(CacheId.GetGuildUser(userId, guildId)); return(userM); }
public async Task <Option <IGuildUser> > GetOrSetAndGet(ulong userId, ulong guildId) { var user = this.Get(userId, guildId); if (user.HasValue) { return(user); } // Do rest request var userResp = await _restClient.GetGuildUserAsync(guildId, userId).ConfigureAwait(false); if (userResp == null) { return(Option.None <IGuildUser>()); } // Otherwise set cache _cacheService.Set(CacheId.GetGuildUser(userId, guildId), userResp, TimeSpan.FromMinutes(_USER_TTL_MINS)); return(Option.Some <IGuildUser>(userResp)); }