Create fake GuildUser if a message is downloaded for a missing user.
This commit is contained in:
@@ -37,10 +37,11 @@ namespace Discord
|
|||||||
|
|
||||||
public DiscordClient Discord => Guild.Discord;
|
public DiscordClient Discord => Guild.Discord;
|
||||||
|
|
||||||
private GuildUser(Guild guild, User user)
|
public GuildUser(Guild guild, User user)
|
||||||
{
|
{
|
||||||
Guild = guild;
|
Guild = guild;
|
||||||
User = user;
|
User = user;
|
||||||
|
Roles = ImmutableArray.Create<Role>();
|
||||||
}
|
}
|
||||||
public GuildUser(Guild guild, User user, Model model)
|
public GuildUser(Guild guild, User user, Model model)
|
||||||
: this(guild, user)
|
: this(guild, user)
|
||||||
|
|||||||
@@ -116,9 +116,19 @@ namespace Discord
|
|||||||
RelativeMessageId = relativeId
|
RelativeMessageId = relativeId
|
||||||
};
|
};
|
||||||
var downloadedMessages = await _discord.ApiClient.GetChannelMessagesAsync(_channel.Id, args).ConfigureAwait(false);
|
var downloadedMessages = await _discord.ApiClient.GetChannelMessagesAsync(_channel.Id, args).ConfigureAwait(false);
|
||||||
|
|
||||||
|
var guild = (_channel as ICachedGuildChannel).Guild;
|
||||||
return cachedMessages.Concat(downloadedMessages.Select(x =>
|
return cachedMessages.Concat(downloadedMessages.Select(x =>
|
||||||
{
|
{
|
||||||
var user = _channel.GetUser(x.Author.Value.Id) ?? new User(_channel.Discord, x.Author.Value) as IUser;
|
IUser user = _channel.GetUser(x.Author.Value.Id);
|
||||||
|
if (user == null)
|
||||||
|
{
|
||||||
|
var newUser = new User(_channel.Discord, x.Author.Value);
|
||||||
|
if (guild != null)
|
||||||
|
user = new GuildUser(guild, newUser);
|
||||||
|
else
|
||||||
|
user = newUser;
|
||||||
|
}
|
||||||
return new CachedMessage(_channel, user, x);
|
return new CachedMessage(_channel, user, x);
|
||||||
})).ToImmutableArray();
|
})).ToImmutableArray();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user