|
|
@ -2,208 +2,214 @@
|
|
|
|
<html lang="en">
|
|
|
|
<html lang="en">
|
|
|
|
|
|
|
|
|
|
|
|
<head>
|
|
|
|
<head>
|
|
|
|
<title>{{ Guild.Name | HtmlEncode }} - {{ Channel.Name | HtmlEncode }}</title>
|
|
|
|
<title>{{ Guild.Name | html.escape }} - {{ Channel.Name | html.escape }}</title>
|
|
|
|
<meta charset="utf-8" />
|
|
|
|
<meta charset="utf-8" />
|
|
|
|
<meta name="viewport" content="width=device-width" />
|
|
|
|
<meta name="viewport" content="width=device-width" />
|
|
|
|
<style>{{ StyleSheet }}</style>
|
|
|
|
<style>
|
|
|
|
|
|
|
|
{{ StyleSheet }}
|
|
|
|
|
|
|
|
</style>
|
|
|
|
</head>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Info }}
|
|
|
|
{{~ # Info ~}}
|
|
|
|
<div class="info">
|
|
|
|
<div class="info">
|
|
|
|
<div class="info__guild-icon-container">
|
|
|
|
<div class="info__guild-icon-container">
|
|
|
|
<img class="info__guild-icon" src="{{ Guild.IconUrl }}" />
|
|
|
|
<img class="info__guild-icon" src="{{ Guild.IconUrl }}" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="info__metadata">
|
|
|
|
<div class="info__metadata">
|
|
|
|
<div class="info__guild-name">{{ Guild.Name | HtmlEncode }}</div>
|
|
|
|
<div class="info__guild-name">{{ Guild.Name | html.escape }}</div>
|
|
|
|
<div class="info__channel-name">{{ Channel.Name | HtmlEncode }}</div>
|
|
|
|
<div class="info__channel-name">{{ Channel.Name | html.escape }}</div>
|
|
|
|
|
|
|
|
|
|
|
|
{{ if Channel.Topic }}
|
|
|
|
{{~ if Channel.Topic ~}}
|
|
|
|
<div class="info__channel-topic">{{ Channel.Topic | HtmlEncode }}</div>
|
|
|
|
<div class="info__channel-topic">{{ Channel.Topic | html.escape }}</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
|
|
|
|
|
|
|
|
<div class="info__channel-message-count">{{ TotalMessageCount | Format "N0" }} messages</div>
|
|
|
|
<div class="info__channel-message-count">{{ TotalMessageCount | Format "N0" }} messages</div>
|
|
|
|
|
|
|
|
|
|
|
|
{{ if From || To }}
|
|
|
|
{{~ if From || To ~}}
|
|
|
|
<div class="info__channel-date-range">
|
|
|
|
<div class="info__channel-date-range">
|
|
|
|
{{ if From && To }}
|
|
|
|
{{~ if From && To ~}}
|
|
|
|
Between {{ From | FormatDate | HtmlEncode }} and {{ To | FormatDate | HtmlEncode }}
|
|
|
|
Between {{ From | FormatDate | html.escape }} and {{ To | FormatDate | html.escape }}
|
|
|
|
{{ else if From }}
|
|
|
|
{{~ else if From ~}}
|
|
|
|
After {{ From | FormatDate | HtmlEncode }}
|
|
|
|
After {{ From | FormatDate | html.escape }}
|
|
|
|
{{ else if To }}
|
|
|
|
{{~ else if To ~}}
|
|
|
|
Before {{ To | FormatDate | HtmlEncode }}
|
|
|
|
Before {{ To | FormatDate | html.escape }}
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Log }}
|
|
|
|
{{~ # Log ~}}
|
|
|
|
<div class="chatlog">
|
|
|
|
<div class="chatlog">
|
|
|
|
{{ for group in MessageGroups }}
|
|
|
|
{{~ for group in MessageGroups ~}}
|
|
|
|
<div class="chatlog__message-group">
|
|
|
|
<div class="chatlog__message-group">
|
|
|
|
{{~ # Avatar }}
|
|
|
|
{{~ # Avatar ~}}
|
|
|
|
<div class="chatlog__author-avatar-container">
|
|
|
|
<div class="chatlog__author-avatar-container">
|
|
|
|
<img class="chatlog__author-avatar" src="{{ group.Author.AvatarUrl }}" />
|
|
|
|
<img class="chatlog__author-avatar" src="{{ group.Author.AvatarUrl }}" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="chatlog__messages">
|
|
|
|
<div class="chatlog__messages">
|
|
|
|
{{~ # Author name and timestamp }}
|
|
|
|
{{~ # Author name and timestamp ~}}
|
|
|
|
<span class="chatlog__author-name" title="{{ group.Author.FullName | HtmlEncode }}">{{ group.Author.Name | HtmlEncode }}</span>
|
|
|
|
<span class="chatlog__author-name" title="{{ group.Author.FullName | html.escape }}">{{ group.Author.Name | html.escape }}</span>
|
|
|
|
<span class="chatlog__timestamp">{{ group.Timestamp | FormatDate | HtmlEncode }}</span>
|
|
|
|
<span class="chatlog__timestamp">{{ group.Timestamp | FormatDate | html.escape }}</span>
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Messages }}
|
|
|
|
{{~ # Messages ~}}
|
|
|
|
{{ for message in group.Messages }}
|
|
|
|
{{~ for message in group.Messages ~}}
|
|
|
|
{{~ # Content }}
|
|
|
|
{{~ # Content ~}}
|
|
|
|
{{ if message.Content }}
|
|
|
|
{{~ if message.Content ~}}
|
|
|
|
<div class="chatlog__content">
|
|
|
|
<div class="chatlog__content">
|
|
|
|
{{ message.Content | FormatContent }}
|
|
|
|
{{ message.Content | FormatContent }}
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Edited timestamp }}
|
|
|
|
{{~ # Edited timestamp ~}}
|
|
|
|
{{ if message.EditedTimestamp }}
|
|
|
|
{{~ if message.EditedTimestamp ~}}
|
|
|
|
<span class="chatlog__edited-timestamp" title="{{ message.EditedTimestamp | FormatDate | HtmlEncode }}">(edited)</span>
|
|
|
|
<span class="chatlog__edited-timestamp" title="{{ message.EditedTimestamp | FormatDate | html.escape }}">(edited)</span>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Attachments }}
|
|
|
|
{{~ # Attachments ~}}
|
|
|
|
{{ for attachment in message.Attachments }}
|
|
|
|
{{~ for attachment in message.Attachments ~}}
|
|
|
|
<div class="chatlog__attachment">
|
|
|
|
<div class="chatlog__attachment">
|
|
|
|
<a href="{{ attachment.Url }}">
|
|
|
|
<a href="{{ attachment.Url }}">
|
|
|
|
{{~ # Image }}
|
|
|
|
{{ # Image }}
|
|
|
|
{{ if attachment.IsImage }}
|
|
|
|
{{~ if attachment.IsImage ~}}
|
|
|
|
<img class="chatlog__attachment-thumbnail" src="{{ attachment.Url }}" />
|
|
|
|
<img class="chatlog__attachment-thumbnail" src="{{ attachment.Url }}" />
|
|
|
|
{{~ # Non-image }}
|
|
|
|
{{~ # Non-image ~}}
|
|
|
|
{{ else }}
|
|
|
|
{{~ else ~}}
|
|
|
|
Attachment: {{ attachment.FileName }} ({{ attachment.FileSize | FormatFileSize }})
|
|
|
|
Attachment: {{ attachment.FileName }} ({{ attachment.FileSize | FormatFileSize }})
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</a>
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Embeds }}
|
|
|
|
{{~ # Embeds ~}}
|
|
|
|
{{ for embed in message.Embeds }}
|
|
|
|
{{~ for embed in message.Embeds ~}}
|
|
|
|
<div class="chatlog__embed">
|
|
|
|
<div class="chatlog__embed">
|
|
|
|
<div class="chatlog__embed-color-pill" style="background-color: rgba({{ embed.Color | FormatColor }})"></div>
|
|
|
|
<div class="chatlog__embed-color-pill" style="background-color: rgba({{ embed.Color | FormatColor }})"></div>
|
|
|
|
<div class="chatlog__embed-content-container">
|
|
|
|
<div class="chatlog__embed-content-container">
|
|
|
|
<div class="chatlog__embed-content">
|
|
|
|
<div class="chatlog__embed-content">
|
|
|
|
<div class="chatlog__embed-text">
|
|
|
|
<div class="chatlog__embed-text">
|
|
|
|
{{~ # Author }}
|
|
|
|
{{~ # Author ~}}
|
|
|
|
{{ if embed.Author }}
|
|
|
|
{{~ if embed.Author ~}}
|
|
|
|
<div class="chatlog__embed-author">
|
|
|
|
<div class="chatlog__embed-author">
|
|
|
|
{{ if embed.Author.IconUrl }}
|
|
|
|
{{~ if embed.Author.IconUrl ~}}
|
|
|
|
<img class="chatlog__embed-author-icon" src="{{ embed.Author.IconUrl }}" />
|
|
|
|
<img class="chatlog__embed-author-icon" src="{{ embed.Author.IconUrl }}" />
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
|
|
|
|
|
|
|
|
{{ if embed.Author.Name }}
|
|
|
|
{{~ if embed.Author.Name ~}}
|
|
|
|
<span class="chatlog__embed-author-name">
|
|
|
|
<span class="chatlog__embed-author-name">
|
|
|
|
{{ if embed.Author.Url }}
|
|
|
|
{{~ if embed.Author.Url ~}}
|
|
|
|
<a class="chatlog__embed-author-name-link" href="{{ embed.Author.Url }}">{{ embed.Author.Name | HtmlEncode }}</a>
|
|
|
|
<a class="chatlog__embed-author-name-link" href="{{ embed.Author.Url }}">{{ embed.Author.Name | html.escape }}</a>
|
|
|
|
{{ else }}
|
|
|
|
{{~ else ~}}
|
|
|
|
{{ embed.Author.Name | HtmlEncode }}
|
|
|
|
{{ embed.Author.Name | html.escape }}
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Title }}
|
|
|
|
{{~ # Title ~}}
|
|
|
|
{{ if embed.Title }}
|
|
|
|
{{~ if embed.Title ~}}
|
|
|
|
<div class="chatlog__embed-title">
|
|
|
|
<div class="chatlog__embed-title">
|
|
|
|
{{ if embed.Url }}
|
|
|
|
{{~ if embed.Url ~}}
|
|
|
|
<a class="chatlog__embed-title-link" href="{{ embed.Url }}">{{ embed.Title | FormatContent }}</a>
|
|
|
|
<a class="chatlog__embed-title-link" href="{{ embed.Url }}">{{ embed.Title | FormatContent }}</a>
|
|
|
|
{{ else }}
|
|
|
|
{{~ else ~}}
|
|
|
|
{{ embed.Title | FormatContent }}
|
|
|
|
{{ embed.Title | FormatContent }}
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Description }}
|
|
|
|
{{~ # Description ~}}
|
|
|
|
{{ if embed.Description }}
|
|
|
|
{{~ if embed.Description ~}}
|
|
|
|
<div class="chatlog__embed-description">{{ embed.Description | FormatContent true }}</div>
|
|
|
|
<div class="chatlog__embed-description">{{ embed.Description | FormatContent true }}</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Fields }}
|
|
|
|
{{~ # Fields ~}}
|
|
|
|
|
|
|
|
{{~ if embed.Fields | array.size > 0 ~}}
|
|
|
|
<div class="chatlog__embed-fields">
|
|
|
|
<div class="chatlog__embed-fields">
|
|
|
|
{{ for field in embed.Fields }}
|
|
|
|
{{~ for field in embed.Fields ~}}
|
|
|
|
<div class="chatlog__embed-field {{ if field.IsInline }} chatlog__embed-field--inline {{ end }}">
|
|
|
|
<div class="chatlog__embed-field {{ if field.IsInline }} chatlog__embed-field--inline {{ end }}">
|
|
|
|
{{ if field.Name }}
|
|
|
|
{{~ if field.Name ~}}
|
|
|
|
<div class="chatlog__embed-field-name">{{ field.Name | FormatContent }}</div>
|
|
|
|
<div class="chatlog__embed-field-name">{{ field.Name | FormatContent }}</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
{{ if field.Value }}
|
|
|
|
{{~ if field.Value ~}}
|
|
|
|
<div class="chatlog__embed-field-value">{{ field.Value | FormatContent true }}</div>
|
|
|
|
<div class="chatlog__embed-field-value">{{ field.Value | FormatContent true }}</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Thumbnail }}
|
|
|
|
{{~ # Thumbnail ~}}
|
|
|
|
{{ if embed.Thumbnail }}
|
|
|
|
{{~ if embed.Thumbnail ~}}
|
|
|
|
<div class="chatlog__embed-thumbnail-container">
|
|
|
|
<div class="chatlog__embed-thumbnail-container">
|
|
|
|
<a class="chatlog__embed-thumbnail-link" href="{{ embed.Thumbnail.Url }}">
|
|
|
|
<a class="chatlog__embed-thumbnail-link" href="{{ embed.Thumbnail.Url }}">
|
|
|
|
<img class="chatlog__embed-thumbnail" src="{{ embed.Thumbnail.Url }}" />
|
|
|
|
<img class="chatlog__embed-thumbnail" src="{{ embed.Thumbnail.Url }}" />
|
|
|
|
</a>
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Image }}
|
|
|
|
{{~ # Image ~}}
|
|
|
|
{{ if embed.Image }}
|
|
|
|
{{~ if embed.Image ~}}
|
|
|
|
<div class="chatlog__embed-image-container">
|
|
|
|
<div class="chatlog__embed-image-container">
|
|
|
|
<a class="chatlog__embed-image-link" href="{{ embed.Image.Url }}">
|
|
|
|
<a class="chatlog__embed-image-link" href="{{ embed.Image.Url }}">
|
|
|
|
<img class="chatlog__embed-image" src="{{ embed.Image.Url }}" />
|
|
|
|
<img class="chatlog__embed-image" src="{{ embed.Image.Url }}" />
|
|
|
|
</a>
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Footer }}
|
|
|
|
{{~ # Footer ~}}
|
|
|
|
{{ if embed.Footer || embed.Timestamp }}
|
|
|
|
{{~ if embed.Footer || embed.Timestamp ~}}
|
|
|
|
<div class="chatlog__embed-footer">
|
|
|
|
<div class="chatlog__embed-footer">
|
|
|
|
{{ if embed.Footer }}
|
|
|
|
{{~ if embed.Footer ~}}
|
|
|
|
{{ if embed.Footer.Text && embed.Footer.IconUrl }}
|
|
|
|
{{~ if embed.Footer.Text && embed.Footer.IconUrl ~}}
|
|
|
|
<img class="chatlog__embed-footer-icon" src="{{ embed.Footer.IconUrl }}" />
|
|
|
|
<img class="chatlog__embed-footer-icon" src="{{ embed.Footer.IconUrl }}" />
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
|
|
|
|
|
|
|
|
<span class="chatlog__embed-footer-text">
|
|
|
|
<span class="chatlog__embed-footer-text">
|
|
|
|
{{ if embed.Footer }}
|
|
|
|
{{~ if embed.Footer ~}}
|
|
|
|
{{ if embed.Footer.Text }}
|
|
|
|
{{~ if embed.Footer.Text ~}}
|
|
|
|
{{ embed.Footer.Text | HtmlEncode }}
|
|
|
|
{{ embed.Footer.Text | html.escape }}
|
|
|
|
{{ if embed.Timestamp }} • {{ end }}
|
|
|
|
{{ if embed.Timestamp }} • {{ end }}
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
|
|
|
|
|
|
|
|
{{ if embed.Timestamp }}
|
|
|
|
{{~ if embed.Timestamp ~}}
|
|
|
|
{{ embed.Timestamp | FormatDate | HtmlEncode }}
|
|
|
|
{{ embed.Timestamp | FormatDate | html.escape }}
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
|
|
|
|
|
|
|
|
{{~ # Reactions }}
|
|
|
|
{{~ # Reactions ~}}
|
|
|
|
|
|
|
|
{{~ if message.Reactions | array.size > 0 ~}}
|
|
|
|
<div class="chatlog__reactions">
|
|
|
|
<div class="chatlog__reactions">
|
|
|
|
{{ for reaction in message.Reactions }}
|
|
|
|
{{~ for reaction in message.Reactions ~}}
|
|
|
|
<div class="chatlog__reaction">
|
|
|
|
<div class="chatlog__reaction">
|
|
|
|
<span class="chatlog__reaction-emoji">
|
|
|
|
<span class="chatlog__reaction-emoji">
|
|
|
|
{{~ # Custom emoji }}
|
|
|
|
{{~ # Custom emoji ~}}
|
|
|
|
{{ if reaction.EmojiId }}
|
|
|
|
{{~ if reaction.EmojiId ~}}
|
|
|
|
<img class="emoji emoji--small" title="{{ reaction.EmojiName }}" src="https://cdn.discordapp.com/emojis/{{ reaction.EmojiId }}.png" />
|
|
|
|
<img class="emoji emoji--small" title="{{ reaction.EmojiName }}" src="https://cdn.discordapp.com/emojis/{{ reaction.EmojiId }}.png" />
|
|
|
|
{{~ # Default emoji }}
|
|
|
|
{{~ # Default emoji ~}}
|
|
|
|
{{ else }}
|
|
|
|
{{~ else ~}}
|
|
|
|
{{ reaction.EmojiName }}
|
|
|
|
{{ reaction.EmojiName }}
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
<span class="chatlog__reaction-count">{{ reaction.Count }}</span>
|
|
|
|
<span class="chatlog__reaction-count">{{ reaction.Count }}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{ end }}
|
|
|
|
{{~ end ~}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</body>
|
|
|
|