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

使用whatsapp-web.js时client.on('message')回调函数未触发

WhatsApp机器人message事件不触发的排查与修复

问题核心

你的client.on('message')回调无法触发,但ready事件正常运行且能发送消息,说明客户端初始化流程没问题,问题集中在代码语法错误或配置逻辑上。

代码中的直接错误修复

1. 缺失axios依赖导入

代码中使用了axios但未导入,会引发运行时错误中断逻辑,需在顶部添加:

const axios = require('axios');

2. MessageMedia方法拼写错误

MessageMedia.formUrl是拼写错误,正确写法为MessageMedia.fromUrl,该错误会导致功能报错,也可能影响回调整体执行。

3. 回调代码块未闭合

最后一个else if (message.body === 'wall-e ~joke')的代码块缺少闭合},这是message事件不触发的核心原因,语法错误导致回调无法正确注册。

修复后的完整message回调代码:

client.on('message',async message => {
    console.log('message request')
    console.log(message.body)
    if (message.body === 'wall-e !ping') {
        console.log('ping request')
        client.sendMessage(message.from, 'pong');
    } else if (message.body === 'wall-e ~meme') {
        console.log('meme request')
        const meme = await axios('https://meme-api.herokuapp.com/gimme').then(res => res.data)
        client.sendMessage(message.from, await MessageMedia.fromUrl(meme.url))
    } else if (message.body === 'wall-e ~joke') {
        console.log('joke request')
        const joke = await axios('https://v2.jokeapi.dev/joke/Any?safe-mode').then(res => res.data)
        if(joke.joke){
            await client.sendMessage(message.from, joke.joke)
        }else if(joke.setup){
            const jokeMessage= await client.sendMessage(message.from, joke.setup)
            if(joke.delivery){
                setTimeout(function(){  jokeMessage.reply(joke.delivery)},5000)
            }
        }
    } // 补上缺失的闭合大括号
});

额外排查点

若修复语法后仍无效果,检查以下内容:

  • 监听自身消息配置:如果用机器人账号在安卓端发消息测试,默认不会监听自身发送的消息,需初始化客户端时添加配置:
    const client = new Client({
        listenOwnMessages: true // 开启监听自身消息
    });
    
  • 会话同步状态:扫码登录后等待WhatsApp Web会话完全加载完成,再发送测试消息。
  • 账号权限:确保机器人账号未被限制、拉黑,能正常接收目标消息。

内容的提问来源于stack exchange,提问作者Naveed Ali Rehmani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:15:41