File tree Expand file tree Collapse file tree 2 files changed +22
-2
lines changed Expand file tree Collapse file tree 2 files changed +22
-2
lines changed Original file line number Diff line number Diff line change 1+ import { escapeDisruptiveContent } from "./discord" ;
2+
3+ test ( "escapeDisruptiveContent" , ( ) => {
4+ expect ( escapeDisruptiveContent ( "@everyone" ) ) . toBe ( "@ everyone" ) ;
5+ expect ( escapeDisruptiveContent ( "@everyone " ) ) . toBe ( "@ everyone " ) ;
6+ expect ( escapeDisruptiveContent ( " @everyone" ) ) . toBe ( " @ everyone" ) ;
7+ expect ( escapeDisruptiveContent ( " @everyonebutts" ) ) . toBe ( " @ everyonebutts" ) ;
8+ expect ( escapeDisruptiveContent ( "butts@everyone" ) ) . toBe ( "butts@ everyone" ) ;
9+ expect ( escapeDisruptiveContent ( "butts@everyonebutts" ) ) . toBe (
10+ "butts@ everyonebutts" ,
11+ ) ;
12+
13+ expect ( escapeDisruptiveContent ( "https://example.com" ) ) . toBe (
14+ "<https://example.com>" ,
15+ ) ;
16+ } ) ;
Original file line number Diff line number Diff line change @@ -55,12 +55,16 @@ export const quoteMessageContent = (content: string) => {
5555 return `> ${ content . replace ( "`" , "\\`" ) . replace ( / [ \n ] / g, "\n> " ) } ` ;
5656} ;
5757
58+ /*
59+ * Escape content that Discord would otherwise do undesireable things with.
60+ * Sepecifically, suppresses @-mentions and link previews.
61+ */
5862export const escapeDisruptiveContent = ( content : string ) => {
5963 return (
6064 content
6165 // Silence pings
62- . replace ( / @ ( . * ? ) \s / g, "@ $1 " )
66+ . replace ( / @ ( \S * ) ( \s ) ? / g, "@ $1$2 " )
6367 // Wrap links in <> so they don't make a preview
64- . replace ( / ( h t t p s ? : \/ \/ .* ? ) \s / g, "<$1> " )
68+ . replace ( / ( h t t p s ? : \/ \/ .* ) \s ? / g, "<$1>" )
6569 ) ;
6670} ;
You can’t perform that action at this time.
0 commit comments