Автоматически добавлять уведомление персонала к сообщениям пользователей

Наша система создаёт учётные записи для публикации объявлений. Мы хотели бы узнать, есть ли возможность добавить отдельное уведомление от сотрудников с собственной иконкой, которое автоматически будет добавляться к таким сообщениям, чтобы объяснить, что это автоматически сгенерированная учётная запись? Подойдёт даже указание через 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 :slight_smile: Я добавил твой пост в существующую тему, так как вопросы кажутся очень похожими. :+1:

Тогда, возможно, стоит закрыть ту тему. Мне, наверное, следовало ответить здесь… :sweat_smile:

Я слишком полагался на автоматические инструменты и не проверил. :slight_smile: Я удалил другую тему. :+1:

Спасибо! :blush:

Если вы используете await, ваша функция должна быть объявлена как async.

Не знаю, как я этого не заметил! Спасибо! Теперь всё работает :slight_smile:

Ничего страшного! Иногда мы все допускаем подобные упущения.

Пожалуйста! :heart:

Все эти хаки хороши и всё такое, но это должно быть встроенной функцией так или иначе.