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; 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)


+ 11
- 1
src/Discord.Net/Entities/WebSocket/MessageCache.cs View File

@@ -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();
} }


Loading…
Cancel
Save