protected override MarkdownNode VisitMention(MentionNode mention)
        {
            if (mention.Type == MentionType.Meta)
            {
                _buffer.Append($"@{mention.Id}");
            }
            else if (mention.Type == MentionType.User)
            {
                var member = _context.TryGetMember(mention.Id);
                var name   = member?.User.Name ?? "Unknown";

                _buffer.Append($"@{name}");
            }
            else if (mention.Type == MentionType.Channel)
            {
                var channel = _context.TryGetChannel(mention.Id);
                var name    = channel?.Name ?? "deleted-channel";

                _buffer.Append($"#{name}");
            }
            else if (mention.Type == MentionType.Role)
            {
                var role = _context.TryGetRole(mention.Id);
                var name = role?.Name ?? "deleted-role";

                _buffer.Append($"@{name}");
            }

            return(base.VisitMention(mention));
        }
    protected override MarkdownNode VisitMention(MentionNode mention)
    {
        if (mention.Kind == MentionKind.Everyone)
        {
            _buffer
            .Append("<span class=\"chatlog__markdown-mention\">")
            .Append("@everyone")
            .Append("</span>");
        }
        else if (mention.Kind == MentionKind.Here)
        {
            _buffer
            .Append("<span class=\"chatlog__markdown-mention\">")
            .Append("@here")
            .Append("</span>");
        }
        else if (mention.Kind == MentionKind.User)
        {
            var member   = mention.TargetId?.Pipe(_context.TryGetMember);
            var fullName = member?.User.FullName ?? "Unknown";
            var nick     = member?.Nick ?? "Unknown";

            _buffer
            .Append($"<span class=\"chatlog__markdown-mention\" title=\"{HtmlEncode(fullName)}\">")
            .Append('@').Append(HtmlEncode(nick))
            .Append("</span>");
        }
        else if (mention.Kind == MentionKind.Channel)
        {
            var channel = mention.TargetId?.Pipe(_context.TryGetChannel);
            var symbol  = channel?.IsVoiceChannel == true ? "🔊" : "#";
            var name    = channel?.Name ?? "deleted-channel";

            _buffer
            .Append("<span class=\"chatlog__markdown-mention\">")
            .Append(symbol).Append(HtmlEncode(name))
            .Append("</span>");
        }
        else if (mention.Kind == MentionKind.Role)
        {
            var role  = mention.TargetId?.Pipe(_context.TryGetRole);
            var name  = role?.Name ?? "deleted-role";
            var color = role?.Color;

            var style = color is not null
                ? $"color: rgb({color.Value.R}, {color.Value.G}, {color.Value.B}); " +
                        $"background-color: rgba({color.Value.R}, {color.Value.G}, {color.Value.B}, 0.1);"
                : "";

            _buffer
            .Append($"<span class=\"chatlog__markdown-mention\" style=\"{style}\">")
            .Append('@').Append(HtmlEncode(name))
            .Append("</span>");
        }

        return(base.VisitMention(mention));
    }
Esempio n. 3
0
            public override Node VisitMention(MentionNode mention)
            {
                var id =
                    mention.Id.HasValue ? (_discord.GetUser(mention.Id.Value)?.Username ?? mention.Id.Value.ToString()) :
                    mention.Special == SpecialMention.Everyone ? "everyone" :
                    mention.Special == SpecialMention.Here ? "here" :
                    throw new ArgumentOutOfRangeException("Unknown mention: " + mention.Special);

                Markup("<code>");
                Text($"@{id}");
                Markup("</code>");
                return(mention);
            }
Esempio n. 4
0
    protected override MarkdownNode VisitMention(MentionNode mention)
    {
        var mentionId = Snowflake.TryParse(mention.Id);

        if (mention.Kind == MentionKind.Meta)
        {
            _buffer
            .Append("<span class=\"mention\">")
            .Append("@").Append(HtmlEncode(mention.Id))
            .Append("</span>");
        }
        else if (mention.Kind == MentionKind.User)
        {
            var member   = mentionId?.Pipe(_context.TryGetMember);
            var fullName = member?.User.FullName ?? "Unknown";
            var nick     = member?.Nick ?? "Unknown";

            _buffer
            .Append($"<span class=\"mention\" title=\"{HtmlEncode(fullName)}\">")
            .Append("@").Append(HtmlEncode(nick))
            .Append("</span>");
        }
        else if (mention.Kind == MentionKind.Channel)
        {
            var channel = mentionId?.Pipe(_context.TryGetChannel);
            var symbol  = channel?.IsVoiceChannel == true ? "🔊" : "#";
            var name    = channel?.Name ?? "deleted-channel";

            _buffer
            .Append("<span class=\"mention\">")
            .Append(symbol).Append(HtmlEncode(name))
            .Append("</span>");
        }
        else if (mention.Kind == MentionKind.Role)
        {
            var role  = mentionId?.Pipe(_context.TryGetRole);
            var name  = role?.Name ?? "deleted-role";
            var color = role?.Color;

            var style = color is not null
                ? $"color: rgb({color?.R}, {color?.G}, {color?.B}); background-color: rgba({color?.R}, {color?.G}, {color?.B}, 0.1);"
                : "";

            _buffer
            .Append($"<span class=\"mention\" style=\"{style}\">")
            .Append("@").Append(HtmlEncode(name))
            .Append("</span>");
        }

        return(base.VisitMention(mention));
    }
        protected override MarkdownNode VisitMention(MentionNode mention)
        {
            if (mention.Type == MentionType.Meta)
            {
                _buffer
                .Append("<span class=\"mention\">")
                .Append("@").Append(HtmlEncode(mention.Id))
                .Append("</span>");
            }
            else if (mention.Type == MentionType.User)
            {
                var member   = _context.TryGetMember(mention.Id);
                var fullName = member?.User.FullName ?? "Unknown";
                var nick     = member?.Nick ?? "Unknown";

                _buffer
                .Append($"<span class=\"mention\" title=\"{HtmlEncode(fullName)}\">")
                .Append("@").Append(HtmlEncode(nick))
                .Append("</span>");
            }
            else if (mention.Type == MentionType.Channel)
            {
                var channel = _context.TryGetChannel(mention.Id);
                var name    = channel?.Name ?? "deleted-channel";

                _buffer
                .Append("<span class=\"mention\">")
                .Append("#").Append(HtmlEncode(name))
                .Append("</span>");
            }
            else if (mention.Type == MentionType.Role)
            {
                var role  = _context.TryGetRole(mention.Id);
                var name  = role?.Name ?? "deleted-role";
                var color = role?.Color;

                var style = color != null
                    ? $"color: rgb({color?.R}, {color?.G}, {color?.B}); background-color: rgba({color?.R}, {color?.G}, {color?.B}, 0.1);"
                    : "";

                _buffer
                .Append($"<span class=\"mention\" style=\"{style}\">")
                .Append("@").Append(HtmlEncode(name))
                .Append("</span>");
            }

            return(base.VisitMention(mention));
        }
Esempio n. 6
0
    protected override MarkdownNode VisitMention(MentionNode mention)
    {
        if (mention.Kind == MentionKind.Everyone)
        {
            _buffer.Append("@everyone");
        }
        else if (mention.Kind == MentionKind.Here)
        {
            _buffer.Append("@here");
        }
        else if (mention.Kind == MentionKind.User)
        {
            var member = mention.TargetId?.Pipe(_context.TryGetMember);
            var name   = member?.User.Name ?? "Unknown";

            _buffer.Append($"@{name}");
        }
        else if (mention.Kind == MentionKind.Channel)
        {
            var channel = mention.TargetId?.Pipe(_context.TryGetChannel);
            var name    = channel?.Name ?? "deleted-channel";

            _buffer.Append($"#{name}");

            // Voice channel marker
            if (channel?.SupportsVoice == true)
            {
                _buffer.Append(" [voice]");
            }
        }
        else if (mention.Kind == MentionKind.Role)
        {
            var role = mention.TargetId?.Pipe(_context.TryGetRole);
            var name = role?.Name ?? "deleted-role";

            _buffer.Append($"@{name}");
        }

        return(base.VisitMention(mention));
    }
    protected override MarkdownNode VisitMention(MentionNode mention)
    {
        var mentionId = Snowflake.TryParse(mention.Id);

        if (mention.Kind == MentionKind.Meta)
        {
            _buffer.Append($"@{mention.Id}");
        }
        else if (mention.Kind == MentionKind.User)
        {
            var member = mentionId?.Pipe(_context.TryGetMember);
            var name   = member?.User.Name ?? "Unknown";

            _buffer.Append($"@{name}");
        }
        else if (mention.Kind == MentionKind.Channel)
        {
            var channel = mentionId?.Pipe(_context.TryGetChannel);
            var name    = channel?.Name ?? "deleted-channel";

            _buffer.Append($"#{name}");

            // Voice channel marker
            if (channel?.IsVoiceChannel == true)
            {
                _buffer.Append(" [voice]");
            }
        }
        else if (mention.Kind == MentionKind.Role)
        {
            var role = mentionId?.Pipe(_context.TryGetRole);
            var name = role?.Name ?? "deleted-role";

            _buffer.Append($"@{name}");
        }

        return(base.VisitMention(mention));
    }
 protected virtual MarkdownNode VisitMention(MentionNode mention) =>
 mention;
Esempio n. 9
0
 public virtual MarkdownNode VisitMention(MentionNode mention) => mention;