mirror of
https://github.com/PluralKit/PluralKit.git
synced 2026-02-04 04:56:49 +00:00
refactor: move guildMember caching to IDiscordCache
This commit is contained in:
parent
99b81085ed
commit
24ac0725af
4 changed files with 32 additions and 16 deletions
|
|
@ -29,7 +29,6 @@ namespace PluralKit.Bot
|
|||
{
|
||||
public class Bot
|
||||
{
|
||||
private readonly ConcurrentDictionary<ulong, GuildMemberPartial> _guildMembers = new();
|
||||
|
||||
private readonly Cluster _cluster;
|
||||
private readonly DiscordApiClient _rest;
|
||||
|
|
@ -84,7 +83,7 @@ namespace PluralKit.Bot
|
|||
|
||||
if (channel.GuildId != null)
|
||||
{
|
||||
var member = _guildMembers.GetValueOrDefault(channel.GuildId.Value);
|
||||
var member = await _cache.TryGetSelfMember(channel.GuildId.Value);
|
||||
return await _cache.PermissionsFor(channelId, _cluster.User?.Id ?? default, member);
|
||||
}
|
||||
|
||||
|
|
@ -93,10 +92,9 @@ namespace PluralKit.Bot
|
|||
|
||||
private async Task OnEventReceived(Shard shard, IGatewayEvent evt)
|
||||
{
|
||||
await _cache.TryUpdateSelfMember(shard, evt);
|
||||
await _cache.HandleGatewayEvent(evt);
|
||||
|
||||
TryUpdateSelfMember(shard, evt);
|
||||
|
||||
// HandleEvent takes a type parameter, automatically inferred by the event type
|
||||
// It will then look up an IEventHandler<TypeOfEvent> in the DI container and call that object's handler method
|
||||
// For registering new ones, see Modules.cs
|
||||
|
|
@ -120,18 +118,6 @@ namespace PluralKit.Bot
|
|||
await HandleResumed(shard);
|
||||
}
|
||||
|
||||
private void TryUpdateSelfMember(Shard shard, IGatewayEvent evt)
|
||||
{
|
||||
if (evt is GuildCreateEvent gc)
|
||||
_guildMembers[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)
|
||||
_guildMembers[mc.GuildId!.Value] = mc.Member;
|
||||
if (evt is GuildMemberAddEvent gma && gma.User.Id == shard.User?.Id)
|
||||
_guildMembers[gma.GuildId] = gma;
|
||||
if (evt is GuildMemberUpdateEvent gmu && gmu.User.Id == shard.User?.Id)
|
||||
_guildMembers[gmu.GuildId] = gmu;
|
||||
}
|
||||
|
||||
private Task HandleResumed(Shard shard)
|
||||
{
|
||||
return UpdateBotStatus(shard);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue