Спасибо за ответ! На самом деле я уже решил задачу другим способом, но я ценю ваше предложение, так как оно выглядит более чистым (в моём варианте мне приходится обращаться к имени класса, и мой метод кажется немного неуклюжим). Вот стратегия, которую я использовал:
// Также раскрасить имена в чате реального времени
api.decorateChatMessage(function (messageContainer, chatChannel)
{
let colorized_groups = this.args?.message?.user?.colorized_groups;
if (colorized_groups == null)
return; // групп нет, делать нечего
const nameClass = "chat-message-info__username__name";
let elements = messageContainer.getElementsByClassName(nameClass);
if (elements.length == 0) // нормально: это может быть второе сообщение без заголовка с именем пользователя
return;
let nameDiv = elements[0];
if (colorized_groups.indexOf("developer") > -1)
nameDiv.classList.add("developer");
else if (colorized_groups.indexOf("wip_researcher") > -1)
nameDiv.classList.add("wip_researcher");
else if (colorized_groups.indexOf("researcher") > -1)
nameDiv.classList.add("researcher");
});
Я предполагаю, что при вашем методе также передаётся this.args.message.user?