Benutzer-Pings in importierten Beiträgen unterdrücken

Wir importieren eine Reihe von Beiträgen, und der Inhalt enthält oft Text wie @global oder ähnliches (das Thema unserer Discourse-Instanz bezieht sich auf Programmierung, und @ ist ein Symbol in dieser Sprache).

Gibt es eine schöne und saubere Möglichkeit, das Anpingen von Benutzern zu unterdrücken? Es macht mir nichts aus, die Beiträge vor dem Import vorzuverarbeiten.

Als eine Art schmutzige Notlösung habe ich festgestellt, dass das Einfügen eines leeren BBCode-Tags nach dem @ funktioniert (wie @[b][/b]global). Es fühlt sich einfach nicht wie eine sehr gute Lösung an und würde erfordern, dass ich den Markdown parsen/tokenisieren muss, da der BBCode nicht eingefügt werden sollte, wenn sich der String in einem Codeblock befindet. Es ist also keine gute Lösung. Ein Nullbreitenleerzeichen ist ebenfalls keine Lösung, da dies zu seltsamen Fehlern führt, wenn Benutzer den Codeausschnitt in ihren eigenen Quellcode kopieren.

Wenn es sich in einem Codeblock befindet, ist es kein Problem. Wenn Sie sicherstellen können, dass es sich immer in einem Codeblock befindet, sind Sie auf der sicheren Seite. Sie müssen jedoch einen echten Parser ausführen, um zu wissen, wann Sie sich in einem Codeblock befinden.

Oh, oder deaktivieren Sie die Einstellung Benutzern erlauben, andere Benutzer zu erwähnen, während Sie die Daten importieren.

1 „Gefällt mir“

Sicher, wenn der @name in einem Codeblock steht, ist es kein Problem. Das Problem ist, zu erkennen, wann dies der Fall ist und wann nicht, damit ich die Erwähnung außerhalb von Codeblöcken verhindern kann, indem ich den unsichtbaren [b][/b]-Tag zwischen @ und dem name einfüge. Es würde tatsächlich einen vollständigen Markdown-Parser/Tokenizer erfordern.

Hmm, gilt das auch dann noch, wenn der Beitrag später neu gebacken wird, oder würde dies in diesem Fall zu zufälligen Erwähnungen führen?

Ich bin ziemlich sicher, dass sie beim erneuten Backen zu einem Schalter wechseln, um Stöße und Erwähnungen zu vermeiden, aber ich habe weder den Code überprüft noch es ausprobiert.

Ich sehe nichts, was Pings verhindert. Die Änderungen werden direkt an die Clients veröffentlicht, soweit ich das verstehe (aber ich bin bei weitem kein Experte für Ruby oder Discourse, also korrigieren Sie mich bitte, wenn ich falsch liege):

Ich glaube, das hier

Ich glaube, bypass bump verhindert auch, dass Mentoren erneut auftreten, aber ein trigger post process hat

`new_post: false,`

Ich denke also, Sie sind auf der sicheren Seite.

2 „Gefällt mir“

Oh, gut bemerkt, den Teil habe ich übersehen! Perfekt, das werde ich dann tun :sparkles:

1 „Gefällt mir“

Und es kann sein, dass Import-Skripte dies bereits festlegen. Ich glaube nicht, dass ein Import eine Unmenge an Benachrichtigungen verursacht.

2 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.