Fix messages in DMs
This commit is contained in:
parent
13e3289c26
commit
1c548e9d7b
@ -1,8 +1,6 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using Myriad.Gateway;
|
using Myriad.Gateway;
|
||||||
using Myriad.Rest;
|
|
||||||
using Myriad.Types;
|
|
||||||
|
|
||||||
namespace Myriad.Cache
|
namespace Myriad.Cache
|
||||||
{
|
{
|
||||||
@ -51,6 +49,11 @@ namespace Myriad.Cache
|
|||||||
|
|
||||||
private static async ValueTask SaveMessageCreate(this IDiscordCache cache, MessageCreateEvent evt)
|
private static async ValueTask SaveMessageCreate(this IDiscordCache cache, MessageCreateEvent evt)
|
||||||
{
|
{
|
||||||
|
// DM messages don't get Channel Create events first, so we need to save
|
||||||
|
// some kind of stub channel object until we get the real one
|
||||||
|
if (evt.GuildId == null)
|
||||||
|
await cache.SaveDmChannelStub(evt.ChannelId);
|
||||||
|
|
||||||
await cache.SaveUser(evt.Author);
|
await cache.SaveUser(evt.Author);
|
||||||
foreach (var mention in evt.Mentions)
|
foreach (var mention in evt.Mentions)
|
||||||
await cache.SaveUser(mention);
|
await cache.SaveUser(mention);
|
||||||
|
@ -11,6 +11,7 @@ namespace Myriad.Cache
|
|||||||
public ValueTask SaveChannel(Channel channel);
|
public ValueTask SaveChannel(Channel channel);
|
||||||
public ValueTask SaveUser(User user);
|
public ValueTask SaveUser(User user);
|
||||||
public ValueTask SaveRole(ulong guildId, Role role);
|
public ValueTask SaveRole(ulong guildId, Role role);
|
||||||
|
public ValueTask SaveDmChannelStub(ulong channelId);
|
||||||
|
|
||||||
public ValueTask RemoveGuild(ulong guildId);
|
public ValueTask RemoveGuild(ulong guildId);
|
||||||
public ValueTask RemoveChannel(ulong channelId);
|
public ValueTask RemoveChannel(ulong channelId);
|
||||||
|
@ -81,6 +81,18 @@ namespace Myriad.Cache
|
|||||||
return default;
|
return default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ValueTask SaveDmChannelStub(ulong channelId)
|
||||||
|
{
|
||||||
|
// Use existing channel object if present, otherwise add a stub
|
||||||
|
// We may get a message create before channel create and we want to have it saved
|
||||||
|
_channels.GetOrAdd(channelId, id => new Channel
|
||||||
|
{
|
||||||
|
Id = id,
|
||||||
|
Type = Channel.ChannelType.Dm
|
||||||
|
});
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
|
||||||
public ValueTask RemoveGuild(ulong guildId)
|
public ValueTask RemoveGuild(ulong guildId)
|
||||||
{
|
{
|
||||||
_guilds.TryRemove(guildId, out _);
|
_guilds.TryRemove(guildId, out _);
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
public bool? Nsfw { get; init; }
|
public bool? Nsfw { get; init; }
|
||||||
public ulong? ParentId { get; init; }
|
public ulong? ParentId { get; init; }
|
||||||
public Overwrite[]? PermissionOverwrites { get; init; }
|
public Overwrite[]? PermissionOverwrites { get; init; }
|
||||||
public User[]? Recipients { get; init; }
|
public User[]? Recipients { get; init; } // NOTE: this may be null for stub channel objects
|
||||||
|
|
||||||
public record Overwrite
|
public record Overwrite
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user