Create fake GuildUser if a message is downloaded for a missing user.

This commit is contained in:
RogueException
2016-06-12 21:30:33 -03:00
parent a51f15b3a6
commit 84157c804f
2 changed files with 13 additions and 2 deletions

View File

@@ -37,10 +37,11 @@ namespace Discord
public DiscordClient Discord => Guild.Discord;
private GuildUser(Guild guild, User user)
public GuildUser(Guild guild, User user)
{
Guild = guild;
User = user;
Roles = ImmutableArray.Create<Role>();
}
public GuildUser(Guild guild, User user, Model model)
: this(guild, user)

View File

@@ -116,9 +116,19 @@ namespace Discord
RelativeMessageId = relativeId
};
var downloadedMessages = await _discord.ApiClient.GetChannelMessagesAsync(_channel.Id, args).ConfigureAwait(false);
var guild = (_channel as ICachedGuildChannel).Guild;
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);
})).ToImmutableArray();
}