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

whatsapp-web.js开发WhatsApp Bot isMe判断指令无法执行问题

问题根因

你的代码存在2个直接导致功能失效的错误:

  • 直接调用了未定义的contact变量,代码运行到判断逻辑时会直接抛出引用错误,后续逻辑完全不会执行
  • 混淆了isMe属性的挂载对象:该属性属于消息发送者的Contact实例,不能直接凭空调用,也不属于Chat对象
修复后代码
client.on('message', async msg => {
    if (msg.body === '.pin') {
        // 先获取当前消息的发送者联系人实例
        const contact = await msg.getContact();
        // 校验发送者是否为当前登录的账号本人(所有者)
        if (contact.isMe) {
            const chat = await msg.getChat();
            await chat.pin();
            msg.reply('This *chat* has been pinned by *Owner*.');
            console.log('[CHAT_PINNED] You were pinned Chat or Group!');
        } else {
            msg.reply('仅所有者可执行该指令');
        }
    }
});
补充说明
  • whatsapp-web.js中所有以get开头的方法都是异步方法,必须使用await等待返回实例后,才能访问实例上的属性/方法,不能直接使用未声明的变量
  • contact.isMe返回布尔值:当对应联系人是当前客户端登录的账号本人时返回true,完全匹配你「仅所有者可执行指令」的权限控制需求
  • Chat对象对应单聊/群聊会话本身,不携带消息发送者的身份信息,不要在Chat对象上调用isMe做权限判断

内容的提问来源于stack exchange,提问作者mukeenanyafiq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:54:28