@@ -82,6 +82,8 @@ namespace PluralKit.Bot {
|
||||
|
||||
var messageCount = await _data.GetMemberMessageCount(member);
|
||||
|
||||
var proxyTagsStr = string.Join('\n', member.ProxyTags.Select(t => $"`{t.ProxyString}`"));
|
||||
|
||||
var eb = new EmbedBuilder()
|
||||
// TODO: add URL of website when that's up
|
||||
.WithAuthor(name, member.AvatarUrl)
|
||||
@@ -94,7 +96,7 @@ namespace PluralKit.Bot {
|
||||
if (member.Birthday != null) eb.AddField("Birthdate", member.BirthdayString, true);
|
||||
if (member.Pronouns != null) eb.AddField("Pronouns", member.Pronouns, true);
|
||||
if (messageCount > 0) eb.AddField("Message Count", messageCount, true);
|
||||
if (member.HasProxyTags) eb.AddField("Proxy Tags", $"{member.Prefix.EscapeMarkdown()}text{member.Suffix.EscapeMarkdown()}", true);
|
||||
if (member.HasProxyTags) eb.AddField("Proxy Tags", string.Join('\n', proxyTagsStr), true);
|
||||
if (member.Color != null) eb.AddField("Color", $"#{member.Color}", true);
|
||||
if (member.Description != null) eb.AddField("Description", member.Description, false);
|
||||
|
||||
|
@@ -44,7 +44,7 @@ namespace PluralKit.Bot
|
||||
_httpClient = new HttpClient();
|
||||
}
|
||||
|
||||
private ProxyMatch GetProxyTagMatch(string message, IEnumerable<ProxyCacheService.ProxyDatabaseResult> potentials)
|
||||
private ProxyMatch GetProxyTagMatch(string message, IEnumerable<ProxyCacheService.ProxyDatabaseResult> potentialMembers)
|
||||
{
|
||||
// If the message starts with a @mention, and then proceeds to have proxy tags,
|
||||
// extract the mention and place it inside the inner message
|
||||
@@ -57,19 +57,19 @@ namespace PluralKit.Bot
|
||||
message = message.Substring(matchStartPosition);
|
||||
}
|
||||
|
||||
// Sort by specificity (ProxyString length desc = prefix+suffix length desc = inner message asc = more specific proxy first!)
|
||||
var ordered = potentials.OrderByDescending(p => p.Member.ProxyString.Length);
|
||||
foreach (var potential in ordered)
|
||||
// Flatten and sort by specificity (ProxyString length desc = prefix+suffix length desc = inner message asc = more specific proxy first!)
|
||||
var ordered = potentialMembers.SelectMany(m => m.Member.ProxyTags.Select(tag => (tag, m))).OrderByDescending(p => p.Item1.ProxyString);
|
||||
foreach (var (tag, match) in ordered)
|
||||
{
|
||||
if (potential.Member.Prefix == null && potential.Member.Suffix == null) continue;
|
||||
if (tag.Prefix == null && tag.Suffix == null) continue;
|
||||
|
||||
var prefix = potential.Member.Prefix ?? "";
|
||||
var suffix = potential.Member.Suffix ?? "";
|
||||
var prefix = tag.Prefix ?? "";
|
||||
var suffix = tag.Suffix ?? "";
|
||||
|
||||
if (message.Length >= prefix.Length + suffix.Length && message.StartsWith(prefix) && message.EndsWith(suffix)) {
|
||||
var inner = message.Substring(prefix.Length, message.Length - prefix.Length - suffix.Length);
|
||||
if (leadingMention != null) inner = $"{leadingMention} {inner}";
|
||||
return new ProxyMatch { Member = potential.Member, System = potential.System, InnerText = inner };
|
||||
return new ProxyMatch { Member = match.Member, System = match.System, InnerText = inner };
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user