Fixed crash when resolving a message with multiple tags

This commit is contained in:
RogueException
2016-10-06 09:20:25 -03:00
parent 090a1bc736
commit dcde486aac

View File

@@ -121,8 +121,8 @@ namespace Discord
newText = ResolveEmoji(tag, emojiHandling); newText = ResolveEmoji(tag, emojiHandling);
break; break;
} }
text.Remove(tag.Index, tag.Length); text.Remove(tag.Index + indexOffset, tag.Length);
text.Insert(tag.Index, newText); text.Insert(tag.Index + indexOffset, newText);
indexOffset += newText.Length - tag.Length; indexOffset += newText.Length - tag.Length;
} }
return text.ToString(); return text.ToString();
@@ -132,20 +132,24 @@ namespace Discord
if (mode != TagHandling.Remove) if (mode != TagHandling.Remove)
{ {
var user = tag.Value as IUser; var user = tag.Value as IUser;
var guildUser = user as IGuildUser;
switch (mode) switch (mode)
{ {
case TagHandling.Name: case TagHandling.Name:
if (user != null) if (user != null)
return $"@{(user as IGuildUser)?.Nickname ?? user?.Username}"; return $"@{guildUser?.Nickname ?? user?.Username}";
else else
return $"@unknown-user"; return $"@unknown-user";
case TagHandling.FullName: case TagHandling.FullName:
if (user != null) if (user != null)
return $"@{(user as IGuildUser)?.Nickname ?? user?.Username}#{user.Discriminator}"; return $"@{guildUser?.Nickname ?? user?.Username}#{user.Discriminator}";
else else
return $"@unknown-user"; return $"@unknown-user";
case TagHandling.Sanitize: case TagHandling.Sanitize:
return MentionUser($"{SanitizeChar}{tag.Key}"); if (guildUser != null && guildUser.Nickname == null)
return MentionUser($"{SanitizeChar}{tag.Key}", false);
else
return MentionUser($"{SanitizeChar}{tag.Key}", true);
} }
} }
return ""; return "";