Fix spoilers
This commit is contained in:
@@ -2,10 +2,9 @@ import { ActionRowBuilder, APIEmbedField, ButtonBuilder, ButtonStyle, Client, Di
|
|||||||
import { config } from '../config';
|
import { config } from '../config';
|
||||||
import { Database } from '../shared/Database';
|
import { Database } from '../shared/Database';
|
||||||
import { Appeal, AppealUpdate, E621Post, PostFlag } from '../types';
|
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 { 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) {
|
export async function appealUpdateHandler(client: Client, update: string) {
|
||||||
const data: AppealUpdate = JSON.parse(update);
|
const data: AppealUpdate = JSON.parse(update);
|
||||||
@@ -92,7 +91,7 @@ async function getCustomFields(appeal: Appeal, flag: PostFlag, post: E621Post):
|
|||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
name: 'Deletion Reason',
|
name: 'Deletion Reason',
|
||||||
value: await parseDTextToMarkdown(flag.reason),
|
value: await parseMarkdownToField(flag.reason),
|
||||||
inline: true
|
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 { config } from '../config';
|
||||||
import { E621Post } from '../types';
|
import { E621Post } from '../types';
|
||||||
import { getManyE621Posts, PostAction, SEARCH_LIMIT, spoilerOrBlacklist } from './e621-utils';
|
import { getManyE621Posts, PostAction, SEARCH_LIMIT, spoilerOrBlacklist } from './e621-utils';
|
||||||
@@ -34,6 +34,20 @@ export async function parseDTextToMarkdown(text: string): Promise<string> {
|
|||||||
const handlers: MarkdownHandlers = {
|
const handlers: MarkdownHandlers = {
|
||||||
...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) => {
|
link: (node: LinkNode, out: string[], ctx: MarkdownFormatContext) => {
|
||||||
ctx.atLineStart = false;
|
ctx.atLineStart = false;
|
||||||
if (node.linkType == 'wiki') {
|
if (node.linkType == 'wiki') {
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ import { APIEmbedField, EmbedAuthorOptions } from 'discord.js';
|
|||||||
import { config } from '../config';
|
import { config } from '../config';
|
||||||
import { parseDTextToMarkdown } from './dtext-utils';
|
import { parseDTextToMarkdown } from './dtext-utils';
|
||||||
|
|
||||||
const MAX_DESCRIPTION_LENGTH = 1024;
|
const MAX_FIELD_LENGTH = 1024;
|
||||||
|
|
||||||
export async function parseMarkdownToField(input: string): Promise<string> {
|
export async function parseMarkdownToField(input: string): Promise<string> {
|
||||||
const text = await parseDTextToMarkdown(input);
|
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 {
|
export function getAuthor(data: { user_id: number, user: string }): EmbedAuthorOptions {
|
||||||
|
|||||||
Reference in New Issue
Block a user