Heute hatte ich dieses Problem:
https://meta.discourse.org/t/required-tags-should-only-be-required-based-on-type-of-user/392238
Aber vorerst, bis das Team daran arbeitet (hoffentlich), habe ich beschlossen, Claude um Hilfe beim Erstellen einer Komponente zu bitten, die es mir ermöglicht, eine benutzerdefinierte Nachricht im Composer anzuzeigen, um mich daran zu erinnern, ein Tag hinzuzufügen. Ich kann einen oder mehrere Benutzer anhand ihrer ID hinzufügen und dies auf bestimmte Kategorien, ebenfalls anhand ihrer ID, beschränken.
Wenn die ID (Benutzer und Kategorien) NICHT auf der Liste steht, sehe ich dies:

Wenn die ID auf der Liste steht, sehe ich die Nachricht:

Falls dies für andere hilfreich ist, hier ist es (erstellen Sie einfach eine Komponente und fügen Sie das Skript in den JS-Tab ein):
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("0.8.31", (api) => {
// Konfiguration: Fügen Sie hier Ihre Benutzer-IDs und Kategorie-IDs hinzu
const TARGET_USER_IDS = [2]; // Ersetzen Sie dies durch tatsächliche Benutzer-IDs
const TARGET_CATEGORY_IDS = [4,49]; // Ersetzen Sie dies durch tatsächliche Kategorie-IDs
const REMINDER_MESSAGE = "🛑 Add the appropriate tag to this post!";
let previousCategoryId = null;
let checkInterval = null;
function checkAndUpdateMessage() {
const composer = api.container.lookup("controller:composer");
if (!composer || !composer.model) {
// Composer ist weg, Stoppen der Überprüfung
if (checkInterval) {
clearInterval(checkInterval);
checkInterval = null;
}
return;
}
const currentUser = api.getCurrentUser();
if (!currentUser || !TARGET_USER_IDS.includes(currentUser.id)) return;
const model = composer.model;
const categoryId = model.categoryId;
// Nur handeln, wenn sich die Kategorie geändert hat
if (categoryId === previousCategoryId) return;
previousCategoryId = categoryId;
const currentReply = model.reply || "";
// Nachricht entfernen, falls sie hinzugefügt wurde
if (currentReply.startsWith(REMINDER_MESSAGE)) {
model.set("reply", currentReply.replace(REMINDER_MESSAGE, "").trim());
}
// Nachricht hinzufügen, wenn in der Zielkategorie und der Composer leer ist
if (categoryId && TARGET_CATEGORY_IDS.includes(categoryId)) {
const cleanReply = model.reply || "";
if (cleanReply.trim().length === 0) {
model.set("reply", REMINDER_MESSAGE);
}
}
}
// Überprüfung beim Öffnen des Composers
api.onAppEvent("composer:opened", () => {
previousCategoryId = null;
checkAndUpdateMessage();
// Polling für Kategorieänderungen starten
if (checkInterval) clearInterval(checkInterval);
checkInterval = setInterval(checkAndUpdateMessage, 300);
});
// Überprüfung stoppen, wenn der Composer geschlossen wird
api.onAppEvent("composer:closed", () => {
if (checkInterval) {
clearInterval(checkInterval);
checkInterval = null;
}
previousCategoryId = null;
});
});