Greasy Fork is available in English.

Feishu Bubble Enhancement

a script to enhance lark/feishu's msg bubble in wrong way

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         Feishu Bubble Enhancement
// @namespace    http://tampermonkey.net/
// @version      2024-04-01
// @description  a script to enhance lark/feishu's msg bubble in wrong way
// @author       haru
// @match        https://*/next/messenger
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bytedance.larkoffice.com
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // 替换为想要屏蔽的人名
    const groupA = ['小李', '李四', '王八'];

    // 替换为想要强调的人名
    const groupB = ['张经理', '小明', '马云'];

    const messageItemSelector = '.js-message-item.message-item';
    const nameSelector = '.message-info-name';

    const blurEffect = 'blur(5px)';
    const renderDouble = 'scale(2.5)';

    const rainbowEffect = `
        background: linear-gradient(90deg, rgba(255, 0, 0, 0.60) 0%, rgba(255, 230, 0, 0.60) 17.4%, rgba(4, 252, 44, 0.60) 33.4%, rgba(0, 224, 255, 0.60) 51.09%, rgba(66, 0, 255, 0.60) 66.4%, rgba(250, 0, 255, 0.60) 79.9%, rgba(255, 0, 0, 0.60) 100%);
        background-size: 100% 100%;
        opcaity: 0.5;
    `;

    setInterval(() => {
        const messageItems = [...document.querySelectorAll(messageItemSelector)];

        messageItems.forEach(item => {
            const name = item.querySelector(nameSelector)?.innerText;
            if (!name) {
                return;
            }

            if (groupA.includes(name)) {
                item.style.filter = blurEffect;
            } else if (groupB.includes(name)) {
                item.style.transform = renderDouble;
                item.style.transformOrigin = 'left';
                item.style.paddingTop = '4em';
                item.style.paddingBottom = '4em';

                // 如果一个人连续发多句话,这里就没法改下边的样式了。哎呀但是就这样吧随便了【
                const div = item.querySelector('.NewMessageContextMenuTrigger.MessageContextMenuTrigger.MessageContextMenuTrigger--scene-chat.message-section-left.message-section-newFileCard');
                if (div) {
                    div.style.cssText = rainbowEffect;
                }
            }
        });
    }, 1000);
})();