Fix spoilers
This commit is contained in:
@@ -2,10 +2,9 @@ import { ActionRowBuilder, APIEmbedField, ButtonBuilder, ButtonStyle, Client, Di
|
||||
import { config } from '../config';
|
||||
import { Database } from '../shared/Database';
|
||||
import { Appeal, AppealUpdate, E621Post, PostFlag } from '../types';
|
||||
import { getAuthor, getColor, parseMarkdownToField, getFields } from './event-utils';
|
||||
import { humanizeCapitalization } from './string-utils';
|
||||
import { getE621Post, getE621PostFlag, PostAction, spoilerOrBlacklist } from './e621-utils';
|
||||
import { parseDTextToMarkdown } from './dtext-utils';
|
||||
import { getAuthor, getColor, getFields, parseMarkdownToField } from './event-utils';
|
||||
import { humanizeCapitalization } from './string-utils';
|
||||
|
||||
export async function appealUpdateHandler(client: Client, update: string) {
|
||||
const data: AppealUpdate = JSON.parse(update);
|
||||
@@ -92,7 +91,7 @@ async function getCustomFields(appeal: Appeal, flag: PostFlag, post: E621Post):
|
||||
return [
|
||||
{
|
||||
name: 'Deletion Reason',
|
||||
value: await parseDTextToMarkdown(flag.reason),
|
||||
value: await parseMarkdownToField(flag.reason),
|
||||
inline: true
|
||||
}
|
||||
];
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { BlockNode, DocumentNode, formatMarkdown, InlineNode, LinkNode, MarkdownFormatContext, MarkdownHandlers, markdownHandlers, parseDTextToAST, TableBodyNode, TableHeadNode, TableLiteralNode, TableRowNode, TextNode } from '@clynamic/dmark';
|
||||
import { BlockNode, DocumentNode, formatMarkdown, InlineNode, LinkNode, MarkdownFormatContext, MarkdownHandlers, markdownHandlers, parseDTextToAST, SpoilerBlockNode, TableBodyNode, TableHeadNode, TableLiteralNode, TableRowNode, TextNode } from '@clynamic/dmark';
|
||||
import { config } from '../config';
|
||||
import { E621Post } from '../types';
|
||||
import { getManyE621Posts, PostAction, SEARCH_LIMIT, spoilerOrBlacklist } from './e621-utils';
|
||||
@@ -34,6 +34,20 @@ export async function parseDTextToMarkdown(text: string): Promise<string> {
|
||||
const handlers: MarkdownHandlers = {
|
||||
...markdownHandlers,
|
||||
|
||||
spoiler_block: (node: SpoilerBlockNode, out: string[], ctx: MarkdownFormatContext) => {
|
||||
for (let i = 0; i < node.children.length; i++) {
|
||||
ctx.atLineStart = true;
|
||||
|
||||
if (i > 0) out.push('\n\n');
|
||||
|
||||
out.push('||');
|
||||
ctx.render(node.children[i], out);
|
||||
out.push('||');
|
||||
}
|
||||
|
||||
ctx.atLineStart = false;
|
||||
},
|
||||
|
||||
link: (node: LinkNode, out: string[], ctx: MarkdownFormatContext) => {
|
||||
ctx.atLineStart = false;
|
||||
if (node.linkType == 'wiki') {
|
||||
|
||||
@@ -2,11 +2,11 @@ import { APIEmbedField, EmbedAuthorOptions } from 'discord.js';
|
||||
import { config } from '../config';
|
||||
import { parseDTextToMarkdown } from './dtext-utils';
|
||||
|
||||
const MAX_DESCRIPTION_LENGTH = 1024;
|
||||
const MAX_FIELD_LENGTH = 1024;
|
||||
|
||||
export async function parseMarkdownToField(input: string): Promise<string> {
|
||||
const text = await parseDTextToMarkdown(input);
|
||||
return text.length >= MAX_DESCRIPTION_LENGTH ? text.slice(0, MAX_DESCRIPTION_LENGTH - 3) + '...' : text;
|
||||
return text.length >= MAX_FIELD_LENGTH ? text.slice(0, MAX_FIELD_LENGTH - 3) + '...' : text;
|
||||
}
|
||||
|
||||
export function getAuthor(data: { user_id: number, user: string }): EmbedAuthorOptions {
|
||||
|
||||
Reference in New Issue
Block a user