こんにちは。
Discourseには、メッセージ内のユーザーメンションの数を制限する機能があり、「新規」ユーザー(信頼レベル0)の場合はさらに制限されます。
意味がわからない場合は、Discourseのソースコードでの実装を以下に示します。
これは良い機能ですが、偶然にも、この制限に達して混乱したユーザーが何人かいました。問題は、ユーザーをメンションするつもりはなかったということです。単にメッセージに含まれるコードスニペットのフォーマットを「忘れた」(または方法を知らなかった)だけで、そのスニペットがJavaコードであったため、アノテーションが含まれており、これらは「@」で始まり、ユーザーメンションとして解釈されます。
そのようなコードの例:
public class MyCode {
@NotNull
private String foo;
@NotNull
private String bar;
@NotNull
private String foobar;
}
エラーメッセージは単純に次のようになります。
申し訳ありませんが、新規ユーザーは投稿で2人のユーザーのみメンションできます。
Markdownでコードをフォーマットする方法に慣れていないユーザーは、ユーザーメンションが何であるかに慣れていない可能性があり、たとえそれに慣れていても、Javaアノテーションとして意図したものがユーザーメンションとして解釈されたことを理解できないかもしれません。
それで…この機能のユーザーエクスペリエンスは改善できるのではないでしょうか?
Discourseがソースコードを自動検出してフォーマットを提案したり、検証に失敗したメッセージの部分をハイライトしたりすることも考えられますが、これらのソリューションはいずれもかなりの労力が必要になるでしょう。
エラーメッセージを拡張して、ユーザーメンションとは何かを説明し、いくつかアドバイスを提供することを考えていました。
少なくともこれくらい:
申し訳ありませんが、新規ユーザーは投稿で2人のユーザーのみメンションできます。
ユーザーメンションは「@」で始まる単語です。例:「@johnsmith」。
そして、さらにこれくらい:
申し訳ありませんが、新規ユーザーは投稿で2人のユーザーのみメンションできます。
ユーザーメンションは「@」で始まる単語です。例:「@johnsmith」。
投稿にソースコードが含まれている場合は、コードの一部がユーザーメンションとして解釈されないように、バッククォートで囲んでください。コードのフォーマットに関するドキュメントへのリンクを挿入してください。
考え、意見はありますか?プルリクエストを送るべきでしょうか?残念ながら、英語とフランス語のロケールしか更新できないかもしれません。
参考までに、混乱したユーザーの例をいくつか示します。

