感谢您的回复!我实际上已经用另一种解决方案解决了这个问题,但我很感谢您提供的方法,因为它看起来更简洁(我的方法需要访问类名,而且感觉有点取巧)。这是我使用的策略:
// 同时为实时聊天中的名称着色
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?