Browse Source

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

tags/1.0-rc
RogueException 9 years ago
parent
commit
84157c804f
2 changed files with 13 additions and 2 deletions
  1. +2
    -1
      src/Discord.Net/Entities/Users/GuildUser.cs
  2. +11
    -1
      src/Discord.Net/Entities/WebSocket/MessageCache.cs

+ 2
- 1
src/Discord.Net/Entities/Users/GuildUser.cs 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)


+ 11
- 1
src/Discord.Net/Entities/WebSocket/MessageCache.cs 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();
}


Loading…
Cancel
Save