@@ -85,14 +85,17 @@ namespace Discord
return false;
return false;
}
}
internal static string Resolve(IMessage msg, TagHandling userHandling, TagHandling channelHandling, TagHandling roleHandling, TagHandling everyoneHandling, TagHandling emojiHandling)
internal static string Resolve(IMessage msg, int startIndex, TagHandling userHandling, TagHandling channelHandling, TagHandling roleHandling, TagHandling everyoneHandling, TagHandling emojiHandling)
{
{
var text = new StringBuilder(msg.Content);
var text = new StringBuilder(msg.Content.Substring(startIndex) );
var tags = msg.Tags;
var tags = msg.Tags;
int indexOffset = 0 ;
int indexOffset = -startIndex ;
foreach (var tag in tags)
foreach (var tag in tags)
{
{
if (tag.Index < startIndex)
continue;
string newText = "";
string newText = "";
switch (tag.Type)
switch (tag.Type)
{
{
@@ -139,12 +142,22 @@ namespace Discord
if (user != null)
if (user != null)
return $"@{guildUser?.Nickname ?? user?.Username}";
return $"@{guildUser?.Nickname ?? user?.Username}";
else
else
return $"@unknown-user";
return $"";
case TagHandling.NameNoPrefix:
if (user != null)
return $"{guildUser?.Nickname ?? user?.Username}";
else
return $"";
case TagHandling.FullName:
case TagHandling.FullName:
if (user != null)
if (user != null)
return $"@{user.Username}#{user.Discriminator}";
return $"@{user.Username}#{user.Discriminator}";
else
else
return $"@unknown-user";
return $"";
case TagHandling.FullNameNoPrefix:
if (user != null)
return $"{user.Username}#{user.Discriminator}";
else
return $"";
case TagHandling.Sanitize:
case TagHandling.Sanitize:
if (guildUser != null && guildUser.Nickname == null)
if (guildUser != null && guildUser.Nickname == null)
return MentionUser($"{SanitizeChar}{tag.Key}", false);
return MentionUser($"{SanitizeChar}{tag.Key}", false);
@@ -166,7 +179,13 @@ namespace Discord
if (channel != null)
if (channel != null)
return $"#{channel.Name}";
return $"#{channel.Name}";
else
else
return $"#deleted-channel";
return $"";
case TagHandling.NameNoPrefix:
case TagHandling.FullNameNoPrefix:
if (channel != null)
return $"{channel.Name}";
else
return $"";
case TagHandling.Sanitize:
case TagHandling.Sanitize:
return MentionChannel($"{SanitizeChar}{tag.Key}");
return MentionChannel($"{SanitizeChar}{tag.Key}");
}
}
@@ -185,7 +204,13 @@ namespace Discord
if (role != null)
if (role != null)
return $"@{role.Name}";
return $"@{role.Name}";
else
else
return $"@deleted-role";
return $"";
case TagHandling.NameNoPrefix:
case TagHandling.FullNameNoPrefix:
if (role != null)
return $"{role.Name}";
else
return $"";
case TagHandling.Sanitize:
case TagHandling.Sanitize:
return MentionRole($"{SanitizeChar}{tag.Key}");
return MentionRole($"{SanitizeChar}{tag.Key}");
}
}
@@ -200,7 +225,9 @@ namespace Discord
{
{
case TagHandling.Name:
case TagHandling.Name:
case TagHandling.FullName:
case TagHandling.FullName:
return "@everyone";
case TagHandling.NameNoPrefix:
case TagHandling.FullNameNoPrefix:
return "everyone";
case TagHandling.Sanitize:
case TagHandling.Sanitize:
return $"@{SanitizeChar}everyone";
return $"@{SanitizeChar}everyone";
}
}
@@ -215,9 +242,11 @@ namespace Discord
{
{
case TagHandling.Name:
case TagHandling.Name:
case TagHandling.FullName:
case TagHandling.FullName:
return "@everyone";
case TagHandling.NameNoPrefix:
case TagHandling.FullNameNoPrefix:
return "here";
case TagHandling.Sanitize:
case TagHandling.Sanitize:
return $"@{SanitizeChar}everyone";
return $"@{SanitizeChar}her e";
}
}
}
}
return "";
return "";
@@ -232,8 +261,11 @@ namespace Discord
case TagHandling.Name:
case TagHandling.Name:
case TagHandling.FullName:
case TagHandling.FullName:
return $":{emoji.Name}:";
return $":{emoji.Name}:";
case TagHandling.NameNoPrefix:
case TagHandling.FullNameNoPrefix:
return $"{emoji.Name}";
case TagHandling.Sanitize:
case TagHandling.Sanitize:
return $"<@{SanitizeChar}everyone";
return $"<{emoji.Id}{SanitizeChar}:{SanitizeChar}{emoji.Name}> ";
}
}
}
}
return "";
return "";