refactor: move guildMember caching to IDiscordCache

This commit is contained in:
spiral 2021-11-21 12:06:08 -05:00
parent 99b81085ed
commit 24ac0725af
No known key found for this signature in database
GPG key ID: A6059F0CA0E1BD31
4 changed files with 32 additions and 16 deletions

View file

@ -1,3 +1,4 @@
using System.Linq;
using System.Threading.Tasks;
using Myriad.Gateway;
@ -51,6 +52,20 @@ namespace Myriad.Cache
return default;
}
public static ValueTask TryUpdateSelfMember(this IDiscordCache cache, Shard shard, IGatewayEvent evt)
{
if (evt is GuildCreateEvent gc)
return cache.SaveSelfMember(gc.Id, gc.Members.FirstOrDefault(m => m.User.Id == shard.User?.Id)!);
if (evt is MessageCreateEvent mc && mc.Member != null && mc.Author.Id == shard.User?.Id)
return cache.SaveSelfMember(mc.GuildId!.Value, mc.Member);
if (evt is GuildMemberAddEvent gma && gma.User.Id == shard.User?.Id)
return cache.SaveSelfMember(gma.GuildId, gma);
if (evt is GuildMemberUpdateEvent gmu && gmu.User.Id == shard.User?.Id)
return cache.SaveSelfMember(gmu.GuildId, gmu);
return default;
}
private static async ValueTask SaveGuildCreate(this IDiscordCache cache, GuildCreateEvent guildCreate)
{
await cache.SaveGuild(guildCreate);