You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

whatsapp-web.js如何检测用户输入状态及链接点击事件

whatsapp-web.js 对应功能实现方案

1. 检测指定联系人输入状态

库本身没有提供全局的输入状态监听,需要先拿到目标联系人对应的Chat实例,再单独绑定实例上的typing事件即可:

  • 目标联系人ID格式要求:国家码+手机号,后缀加@c.us,不要带开头的+,例如中国手机号13800138000对应的ID是8613800138000@c.us
  • 如需监听多个联系人,逐个获取对应Chat实例绑定事件即可
  • 如需检测对方停止输入,可给Chat实例绑定clear_typing事件,触发时机为对方终止输入操作

2. 链接点击触发逻辑说明

重要提示:WhatsApp客户端不会向网页端同步用户点击消息内链接的行为,库本身不存在直接监听链接点击的API。
要实现该需求只能通过自建中转页的方案实现:

  • 给不同用户发送的链接追加唯一用户标识参数
  • 用户点击链接会先请求你的中转页服务,服务端拿到请求里的用户标识后,即可调用机器人接口给对应用户发送预设消息
  • 中转页处理完逻辑后再跳转到真实目标地址,用户侧无跳转感知

整合后的完整代码

const { Client } = require('whatsapp-web.js');
// 配置需要检测输入状态的目标联系人ID
const TARGET_TYPING_CONTACT = '8613800138000@c.us';

const client = new Client();

client.on('qr', (qr) => {
    console.log('QR RECEIVED', qr);
});

client.on('ready', async () => {
    console.log('Client is ready!');
    // 客户端就绪后绑定目标联系人的输入监听
    try {
        const targetChat = await client.getChatById(TARGET_TYPING_CONTACT);
        // 监听正在输入事件
        targetChat.on('typing', (userId) => {
            if (userId === TARGET_TYPING_CONTACT) {
                console.log(`检测到指定联系人正在输入`);
                // 此处写入输入状态触发的自定义逻辑
            }
        });
        // 可选:监听停止输入事件
        targetChat.on('clear_typing', (userId) => {
            if (userId === TARGET_TYPING_CONTACT) {
                console.log(`指定联系人已停止输入`);
            }
        });
    } catch (err) {
        console.error('绑定输入监听失败,请检查联系人ID格式是否正确', err);
    }
});

client.on('message', msg => {
    if (msg.body == '!ping') {
        msg.reply('pong');
    }
    // 示例:用户触发指令时发送带追踪参数的链接
    if (msg.body == '!getlink') {
        // 链接追加当前用户ID作为唯一标识,供中转页识别点击用户
        const trackLink = `https://你的中转服务地址?uid=${msg.from}&redirect=真实目标链接地址`;
        msg.reply(`点击访问:${trackLink}`);
    }
});

/**
 * 中转服务收到点击请求时调用该方法发送预设消息
 * @param {string} userId 点击链接的用户ID
 * @param {string} sendContent 要发送的预设内容
 */
async function triggerMsgOnLinkClick(userId, sendContent) {
    const chat = await client.getChatById(userId);
    await chat.sendMessage(sendContent);
}

client.initialize();

内容的提问来源于stack exchange,提问作者miguel angel Asencio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:27:24