抖音直播聊天室用户互动(评论、礼物)的自动化脚本 vx: haotsh

一个用于处理抖音直播聊天室用户互动(评论、礼物)的自动化脚本,主要功能包括消息捕获、过滤、回复及AI交互。以下是详细分析:

vx :  haotsh


核心功能解析

  1. 消息捕获

    • DOM节点提取: 通过getNode()从突变观察的目标节点中定位聊天项容器(类名webcast-chatroom___item-wrapper的div)。
    • 昵称/内容提取: 使用getTextNodeContent()从DOM节点中提取用户昵称和评论内容。
  2. 礼物识别

    • 图标哈希匹配: 通过检测HTML中图片资源的哈希值(如e9b7db267d0501b8963d8000c091e123)判断礼物类型(如"人气票"),并将礼物名称追加到评论信息中。
  3. 过滤机制

    • 黑名单检查: 若昵称在douyinNicknames列表或评论内容含有关键词(blackWordArr),则忽略消息。
    • 历史去重: 使用historyList缓存最近200条消息,避免重复处理。
  4. 消息处理与回复

    • 关键词回复: 匹配预设的qaKeywords,若命中则替换变量(如{昵称})并延迟发送(speakBreak控制间隔)。
    • AI回复: 调用外部API(apiBase)生成回复,同样替换变量后发送。
    • 频率限制: 通过timeLimitlastInvocationTime控制消息发送频率,防止触发平台限制。
  5. 辅助功能

    • 界面更新: showNewMessageBox()显示新消息到界面。
    • 钩子函数: Hook()可能用于外部通知或日志记录。
let douyin = getNode(mutation.target, './div[contains(@class,"webcast-chatroom___item-wrapper")]');
if (douyin) {
  // 提取昵称和内容
  let nickname = getTextNodeContent(douyin, "./div/span[2]");
  let commentInfo = getTextNodeContent(douyin, "./div/span[3]");
  
  // 礼物识别逻辑
  let sourceHtml = getHtmlNodeContent(douyin, "./div/span[3]");
  if (sourceHtml.includes("e9b7db267d0501b8963d8000c091e123")) gift = "人气票";
  // ...其他礼物判断
  
  // 过滤黑名单和关键词
  if (douyinNicknames.includes(nickname) || containsKeyword(commentInfo, blackWordArr)) return;
  
  // 构建消息体并检查历史记录
  requestBody = nickname + ":" + commentInfo;
  if (!historyList.includes(requestBody)) {
    historyList.push(requestBody);
    showNewMessageBox(requestBody);
    Hook(nickname, commentInfo, getHtmlNodeContent(douyin, "./div/span[3]"));
    
    // 关键词回复
    let replyContent = searchKeywordReplys(qaKeywords, commentInfo);
    if (replyContent) {
      // 频率检查与延迟发送
      async function delay() {
        await sleep(1000 * speakBreak);
        sendReplyContent(replyContent);
      }
      delay();
      return;
    }
    
    // AI回复
    sendAsyncAIQuestion(apiBase, nickname, "", commentInfo).then(replyContent => {
      sendReplyContent(replyContent);
    });
  }
}

 

posted @ 2025-02-22 11:51  唯一客服系统开发笔记  阅读(232)  评论(0)    收藏  举报