インポートされた投稿でのユーザーpingを抑制する

投稿を大量にインポートしており、コンテンツには @global のようなテキストが含まれることがよくあります(私たちの Discourse インスタンスのトピックはプログラミングに関連しており、@ はその言語の記号です)。

ユーザーへのメンションを抑制する、きれいでクリーンな方法はありますか?インポート前に投稿を前処理しても構いません。

やや汚い回避策として、@ の後に空の bbcode タグを挿入すると機能することを発見しました(例:@[b][/b]global)。これはあまり良い解決策とは言えず、文字列がコードブロック内にある場合は bbcode を挿入しないように、マークダウンを解析/トークン化する必要があります。そのため、良い解決策ではありません。ゼロ幅スペースも、ユーザーがコードスニペットを自分のソースコードにコピーしたときに奇妙なエラーが発生するため、解決策ではありません。

コードブロック内であれば問題ありません。常にコードブロック内に収めることができれば、問題ありません。ただし、コードブロック内にあるかどうかを判断するには、実際のパーサーを実行する必要があります。

あるいは、データをインポートする際に ユーザーが他のユーザーにメンションすることを許可する 設定をオフにします。

「いいね!」 1

はい、@name がコードブロック内であれば問題ありません。問題は、それがコードブロック内にある場合とない場合を検出することです。これにより、@name の間に目に見えない [b][/b] タグを挿入して、コードブロック外でのメンションを防止できます。これには完全な Markdown パーサー/トークナイザーが必要になります。

うーん、投稿が後で再ベイクされた場合でもそれは適用されますか?それとも、その場合、ランダムなメンションにつながりますか?

再ベイクされたときに、バンプやメンションを回避するためのスイッチに切り替わると思いますが、コードを確認したことも試したこともありません。

pingを妨げるようなものは何も見当たりません。私の理解では、変更はクライアントに直接公開されます(ただし、私はRubyやDiscourseの専門家では全くないので、もし間違っていたら訂正してください)。

これだと思います

バイパスバンプはメンターの再発生も防ぐと思いますが、trigger post process には

`new_post: false,`

があるので、安全だと思います。

「いいね!」 2

おお、良い点に気づきましたね。その部分を見落としていました!完璧です、そうしますね :sparkles:

「いいね!」 1

そして、インポートスクリプトが既にこれを設定している可能性があります。インポートで大量の通知が発生するとは思いません。

「いいね!」 2

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