diff --git a/Feature/EntityCache/EntityCache.cs b/Feature/EntityCache/EntityCache.cs index b871c10..259c1ce 100644 --- a/Feature/EntityCache/EntityCache.cs +++ b/Feature/EntityCache/EntityCache.cs @@ -38,7 +38,7 @@ namespace Noikoio.RegexBot.Feature.EntityCache Log("No database storage available.").Wait(); } } - + public override Task ProcessConfiguration(JToken configSection) => Task.FromResult(null); #region Event handling diff --git a/Feature/EntityCache/UserCacheItem.cs b/Feature/EntityCache/UserCacheItem.cs index 9d0da3a..9b09f99 100644 --- a/Feature/EntityCache/UserCacheItem.cs +++ b/Feature/EntityCache/UserCacheItem.cs @@ -41,7 +41,7 @@ namespace Noikoio.RegexBot.Feature.EntityCache /// public string Mention => $"<@{_userId}>"; /// - /// User's cached nickname in the guild, if any. + /// User's cached nickname in the guild. May be null. /// public string Nickname => _nickname; /// @@ -70,8 +70,8 @@ namespace Noikoio.RegexBot.Feature.EntityCache _cacheDate = r.GetDateTime(2).ToUniversalTime(); _username = r.GetString(3); _discriminator = r.GetString(4); - _nickname = r.GetString(5); - _avatarUrl = r.GetString(6); + _nickname = r.IsDBNull(5) ? null : r.GetString(5); + _avatarUrl = r.IsDBNull(6) ? null : r.GetString(6); } public override string ToString() => DisplayName; @@ -115,14 +115,15 @@ namespace Noikoio.RegexBot.Feature.EntityCache /// Attempts to look up the user given a search string. /// This string looks up case-insensitive, exact matches of nicknames and usernames. /// - /// /// An containing zero or more query results, sorted by cache date. public static async Task> QueryAsync(ulong guild, string search) { // Is search just a number? It's an ID. if (ulong.TryParse(search, out var presult)) { - return new UserCacheItem[] { await QueryAsync(guild, presult) }; + var r = await QueryAsync(guild, presult); + if (r == null) return new UserCacheItem[0]; + else return new UserCacheItem[] { r }; } string name;