Fix fetching messages we can't access

This commit is contained in:
Ske 2021-01-31 17:56:33 +01:00
parent ef614d07c3
commit 557ec4234e

View File

@ -9,6 +9,7 @@ using Myriad.Builders;
using Myriad.Cache; using Myriad.Cache;
using Myriad.Extensions; using Myriad.Extensions;
using Myriad.Rest; using Myriad.Rest;
using Myriad.Rest.Exceptions;
using Myriad.Types; using Myriad.Types;
using NodaTime; using NodaTime;
@ -226,7 +227,16 @@ namespace PluralKit.Bot {
{ {
var channel = await _cache.GetOrFetchChannel(_rest, msg.Message.Channel); var channel = await _cache.GetOrFetchChannel(_rest, msg.Message.Channel);
var ctx = LookupContext.ByNonOwner; var ctx = LookupContext.ByNonOwner;
var serverMsg = channel != null ? await _rest.GetMessage(msg.Message.Channel, msg.Message.Mid) : null;
Message serverMsg = null;
try
{
serverMsg = await _rest.GetMessage(msg.Message.Channel, msg.Message.Mid);
}
catch (ForbiddenException)
{
// no permission, couldn't fetch, oh well
}
// Need this whole dance to handle cases where: // Need this whole dance to handle cases where:
// - the user is deleted (userInfo == null) // - the user is deleted (userInfo == null)
@ -237,11 +247,20 @@ namespace PluralKit.Bot {
User userInfo = null; User userInfo = null;
if (channel != null) if (channel != null)
{ {
var m = await _rest.GetGuildMember(channel.GuildId!.Value, msg.Message.Sender); GuildMember member = null;
if (m != null) try
{
member = await _rest.GetGuildMember(channel.GuildId!.Value, msg.Message.Sender);
}
catch (ForbiddenException)
{
// no permission, couldn't fetch, oh well
}
if (member != null)
// Don't do an extra request if we already have this info from the member lookup // Don't do an extra request if we already have this info from the member lookup
userInfo = m.User; userInfo = member.User;
memberInfo = m; memberInfo = member;
} }
else userInfo = await _cache.GetOrFetchUser(_rest, msg.Message.Sender); else userInfo = await _cache.GetOrFetchUser(_rest, msg.Message.Sender);