Наша система создаёт учётные записи для публикации объявлений. Мы хотели бы узнать, есть ли возможность добавить отдельное уведомление от сотрудников с собственной иконкой, которое автоматически будет добавляться к таким сообщениям, чтобы объяснить, что это автоматически сгенерированная учётная запись? Подойдёт даже указание через ID пользователя/имя или группу.
Я думаю, что этого можно достичь с помощью компонентов темы. Например, этот код делает то, что вам нужно:
<script type="text/discourse-plugin" version="0.8">
const { iconHTML } = require("discourse-common/lib/icon-library");
const bot_id = 128856; // или другой
api.decorateWidget("post:before", (helper) => {
if (helper?.getModel()?.user_id !== bot_id) {return;}
return helper.h("div.post-notice",[
helper.rawHtml(iconHTML("shield-alt")), // имя иконки
helper.h("p", "это бот"), // текст
]);
});
</script>
Привет!
Я пытался использовать JS, чтобы автоматически добавлять уведомление для сотрудников к автоматически созданной учётной записи, если она является участником группы “autogenerated”, но не уверен, где именно я ошибаюсь.
<script>
window.onload = async function() {
const { groupMembers } = await discourse.groups.getMembers({
group_name: 'autogenerated'
});
if (groupMembers.includes(helper.getModel().user_id)) {
return helper.h('div.post-notices', [
helper.rawHtml(iconHTML('shield-alt')),
helper.h('p', 'Эта учётная запись создана автоматически и должна рассматриваться как бот. За этой учётной записью не следит персонал.')
]);
}
}
</script>
Я разместил код в разделе “Head” нашего компонента, но он не выполняется. Не уверен, вызываю ли я функцию неправильно или условие в моём операторе IF вдруг перестало выполняться.
Привет, @jhealey
Я добавил твой пост в существующую тему, так как вопросы кажутся очень похожими. ![]()
Тогда, возможно, стоит закрыть ту тему. Мне, наверное, следовало ответить здесь… ![]()
Я слишком полагался на автоматические инструменты и не проверил.
Я удалил другую тему. ![]()
Спасибо! ![]()
Если вы используете await, ваша функция должна быть объявлена как async.
Не знаю, как я этого не заметил! Спасибо! Теперь всё работает ![]()
Ничего страшного! Иногда мы все допускаем подобные упущения.
Пожалуйста! ![]()
Все эти хаки хороши и всё такое, но это должно быть встроенной функцией так или иначе.