首页
/ 微信机器人教程WeChat Bot:关键词自动回复

微信机器人教程WeChat Bot:关键词自动回复

2026-02-04 05:00:24作者:庞眉杨Will

引言:告别重复劳动,让AI帮你值守微信

你是否还在为微信群消息淹没而烦恼?客户咨询重复问题占用大量时间?社群管理需要24小时在线响应?本文将带你从零构建一个基于WeChaty和AI服务的关键词自动回复机器人,通过简单配置即可实现"关键词触发-智能响应"的自动化流程,让你从机械回复中解放双手。

读完本文你将获得:

  • 掌握WeChat Bot核心配置与启动流程
  • 实现多场景关键词自动回复逻辑
  • 适配DeepSeek/ChatGPT/Kimi等9种AI服务
  • 解决白名单管理、消息过滤等实战问题
  • 学会Docker容器化部署与长期维护

技术架构概览

flowchart TD
    A[微信消息] --> B{是否文本类型}
    B -->|否| C[忽略]
    B -->|是| D{是否在白名单}
    D -->|否| C
    D -->|是| E{关键词匹配}
    E -->|否| C
    E -->|是| F[调用AI服务]
    F --> G[生成回复内容]
    G --> H[发送消息]

核心组件说明

组件 作用 技术选型
消息接收 监听微信消息事件 Wechaty
规则引擎 关键词匹配与过滤 JavaScript正则
AI服务 生成智能回复 DeepSeek/ChatGPT/Kimi等
配置中心 环境变量与白名单管理 dotenv
部署载体 容器化运行环境 Docker

环境准备与快速启动

1. 开发环境要求

pie
    title 环境依赖占比
    "Node.js (≥18.0)" : 40
    "npm/yarn" : 20
    "Git" : 15
    "Docker (可选)" : 25

安装步骤

# 检查Node.js版本
node -v  # 需≥18.0.0

# 克隆项目仓库
git clone https://gitcode.com/GitHub_Trending/we/wechat-bot.git
cd wechat-bot

# 安装依赖(国内用户推荐切换镜像)
npm config set registry https://registry.npmmirror.com
npm install

2. 核心配置文件详解

创建.env配置文件(复制.env.example修改):

# ====== AI服务配置 ======
# 推荐使用DeepSeek-Free(免费额度充足)
DEEPSEEK_FREE_URL='https://api.deepseek.com/chat/completions'
DEEPSEEK_FREE_TOKEN='你的API密钥'  # 从https://platform.deepseek.com获取
DEEPSEEK_FREE_MODEL='deepseek-chat'

# ====== 机器人身份配置 ======
BOT_NAME='@AI助手'  # 必须与微信昵称一致
SERVICE_TYPE='deepseek-free'  # 默认AI服务类型

# ====== 关键词回复规则 ======
AUTO_REPLY_PREFIX='!'  # 触发前缀(留空则匹配所有消息)

# ====== 访问控制 ======
ALIAS_WHITELIST='张三,李四'  # 允许私聊的联系人
ROOM_WHITELIST='技术交流群,产品讨论组'  # 允许自动回复的群聊

配置项优先级:环境变量 > .env文件 > 默认值

关键词自动回复核心实现

1. 消息处理流程解析

// src/wechaty/sendMessage.js 核心代码
export async function defaultMessage(msg, bot, ServiceType) {
  const contact = msg.talker()        // 发消息人
  const content = msg.text().trim()   // 消息内容
  const room = msg.room()             // 是否群聊
  const roomName = await room?.topic()
  const alias = await contact.alias() || contact.name()
  
  // 过滤规则:非文本消息/机器人自己/不在白名单 → 忽略
  if (!isText || isBotSelf || !isAllowed(alias, roomName)) return

  // 关键词匹配逻辑
  if (content.startsWith(AUTO_REPLY_PREFIX)) {
    const question = content.replace(AUTO_REPLY_PREFIX, '')
    const reply = await getAIServiceReply(question, ServiceType)
    await msg.say(reply)  // 发送回复
  }
}

2. 关键词匹配规则设计

规则类型 配置示例 触发效果
前缀匹配 AUTO_REPLY_PREFIX='!' 仅回复以!开头的消息
全词匹配 需自定义代码 精确匹配关键词(如"天气")
正则匹配 需自定义代码 支持复杂模式(如/^\d{4}-\d{2}-\d{2}$/匹配日期)

高级匹配实现(需修改sendMessage.js):

// 添加关键词数组匹配
const KEYWORDS = ['天气', '翻译', '快递查询']
const isKeywordMatch = KEYWORDS.some(k => content.includes(k))

if (isKeywordMatch) {
  // 根据不同关键词调用不同处理函数
  switch(true) {
    case content.includes('天气'):
      reply = await getWeatherReply(content)
      break
    case content.includes('翻译'):
      reply = await getTranslationReply(content)
      break
  }
}

3. 多AI服务切换机制

classDiagram
    class AIService {
        +getReply(question)
    }
    class DeepSeekService {
        +getReply(question)
    }
    class ChatGPTService {
        +getReply(question)
    }
    class KimiService {
        +getReply(question)
    }
    AIService <|-- DeepSeekService
    AIService <|-- ChatGPTService
    AIService <|-- KimiService

动态选择AI服务

// src/wechaty/serve.js
export function getServe(serviceType) {
  switch (serviceType) {
    case 'ChatGPT': return getGptReply
    case 'Kimi': return getKimiReply
    case 'Xunfei': return getXunfeiReply
    default: return getDeepSeekFreeReply  // 默认服务
  }
}

实战案例:企业级应用配置

1. 客服场景:常见问题自动回复

配置示例

# .env配置
AUTO_REPLY_PREFIX='客服-'
ALIAS_WHITELIST='客户A,客户B,VIP客户群'

# 自定义关键词回复(需修改sendMessage.js)
const FAQ = {
  '客服-退款政策': '退款将在3个工作日内原路返回...',
  '客服-发货时间': '每日16:00前下单当日发货...',
  '客服-保修范围': '产品享受1年免费保修...'
}

效果演示

  • 用户发送:客服-退款政策
  • 机器人回复:退款将在3个工作日内原路返回,具体到账时间取决于银行处理速度...

2. 社群管理:关键词触发群规则

// 群聊关键词管理示例
if (room && content.includes('群规')) {
  await room.say('📢 群规:\n1. 禁止广告\n2. 文明交流\n3. 定期清理潜水账号')
  // 配合定时任务实现提醒功能
}

部署与维护

1. 本地测试

# 测试AI服务连通性
npm run test-deepseek  # 根据选择的服务修改命令

# 启动机器人
npm run dev
# 或指定服务类型启动
npm run start -- --serve deepseek-free

扫码登录:启动后终端会显示二维码,用微信扫码即可登录机器人账号。

2. Docker容器化部署

# 构建镜像
docker build -t wechat-bot .

# 运行容器(持久化配置)
docker run -d --name wechat-bot \
  -v $(pwd)/.env:/app/.env \
  --restart=always \
  wechat-bot

容器状态管理

命令 作用
docker logs -f wechat-bot 查看实时日志
docker restart wechat-bot 重启服务
docker exec -it wechat-bot bash 进入容器

常见问题与解决方案

1. 关键词不触发回复?

stateDiagram
    [*] --> 检查前缀配置
    检查前缀配置 -->|正确| 检查白名单
    检查前缀配置 -->|错误| 修改AUTO_REPLY_PREFIX
    检查白名单 -->|在名单内| 检查AI服务
    检查白名单 -->|不在名单内| 添加到ALIAS_WHITELIST
    检查AI服务 -->|正常| 检查网络
    检查AI服务 -->|异常| 重新配置API_KEY
    检查网络 -->|通畅| [*]
    检查网络 -->|不通| 配置代理

2. 微信登录失败

  • 错误提示ScanTimeout

    • 解决方案:确保微信客户端已登录,网络通畅,尝试重启机器人。
  • 错误提示PuppetServiceTokenExpired

    • 解决方案:更新Wechaty依赖,或切换puppet(修改index.js中的puppet配置)。

结语与进阶方向

本文介绍的关键词自动回复功能只是WeChat Bot能力的冰山一角。基于此框架,你还可以扩展:

  • 多轮对话:结合上下文记忆实现连续对话
  • 定时任务:如每日天气提醒、新闻推送
  • 消息转发:跨群消息同步、重要信息@提醒
  • OCR识别:图片关键词提取与回复

项目持续更新中,欢迎提交PR贡献代码,或在Issues中反馈问题。

收藏本文,下次需要搭建微信机器人时,即可快速上手!如有疑问,欢迎在评论区留言讨论。

登录后查看全文
热门项目推荐
相关项目推荐