微信机器人开发神器WeChat Bot:API调用示例

微信机器人开发神器WeChat Bot:API调用示例

【免费下载链接】wechat-bot 🤖一个基于 WeChaty 结合 DeepSeek / ChatGPT / Kimi / 讯飞等Ai服务实现的微信机器人 ,可以用来帮助你自动回复微信消息,或者管理微信群/好友,检测僵尸粉等... 【免费下载链接】wechat-bot 项目地址: https://gitcode.com/GitHub_Trending/we/wechat-bot

引言:告别重复劳动,5分钟搭建智能微信机器人

你是否还在手动回复微信群消息?还在为管理多个微信账号而烦恼?WeChat Bot 作为一款基于 WeChaty 框架的开源微信机器人解决方案,支持 DeepSeek、ChatGPT、Kimi 等 11 种 AI 服务,可快速实现消息自动回复、群管理、好友维护等功能。本文将通过 8 个实战案例,带你掌握从环境配置到高级 API 调用的全流程,让你彻底解放双手。

读完本文你将获得:

  • 3 种环境部署方案(本地开发/服务器部署/Docker 容器)
  • 5 大核心 API 调用模板(消息收发/群管理/好友操作/AI 集成/事件监听)
  • 7 种 AI 服务接入指南(含免费额度申请渠道)
  • 10+ 生产环境避坑指南(含微信风控规避策略)

技术架构全景图

mermaid

环境准备:3步完成开发环境搭建

1. 基础环境要求

环境依赖版本要求安装命令
Node.js≥18.0.0nvm install 18
npm/yarn≥8.0.0npm install -g yarn
Git任意版本sudo apt install git

2. 项目初始化

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

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

# 复制环境变量模板
cp .env.example .env

3. 核心配置文件(.env)详解

# 机器人基础配置
BOT_NAME=@你的机器人微信名  # 群聊@触发前缀
AUTO_REPLY_PREFIX=ai:      # 私聊触发前缀(可选)

# AI服务配置(任选其一)
DEEPSEEK_FREE_TOKEN=sk-xxx  # DeepSeek免费API密钥
OPENAI_API_KEY=sk-xxx       # OpenAI密钥
KIMI_API_KEY=sk-xxx         # Kimi密钥

# 白名单配置
ALIAS_WHITELIST=张三,李四   # 私聊自动回复白名单
ROOM_WHITELIST=技术交流群,产品讨论群  # 群聊自动回复白名单

核心API调用示例:从Hello World到智能交互

1. 机器人初始化与登录

// src/index.js 核心代码
import { WechatyBuilder } from 'wechaty'

// 构建机器人实例
const bot = WechatyBuilder.build({
  name: 'WeChatBot',
  puppet: 'wechaty-puppet-wechat4u', // 免费Web协议
  puppetOptions: { uos: true }       // 开启UOS协议规避检测
})

// 扫码登录事件
bot.on('scan', (qrcode, status) => {
  if (status === ScanStatus.Waiting) {
    // 在终端显示二维码
    qrcodeTerminal.generate(qrcode, { small: true })
  }
})

// 启动机器人
bot.start()
  .then(() => console.log('机器人启动成功,等待扫码登录...'))
  .catch(e => console.error('启动失败:', e))

2. 消息接收与自动回复

// src/wechaty/sendMessage.js 核心逻辑
export async function defaultMessage(msg, bot, serviceType) {
  const contact = msg.talker()        // 发信人
  const content = msg.text()          // 消息内容
  const room = msg.room()             // 是否群聊
  const isText = msg.type() === bot.Message.Type.Text

  // 群聊消息处理(需@机器人且在白名单内)
  if (room && await isRoomWhiteListed(room) && content.includes(botName)) {
    const question = content.replace(botName, '').trim()
    const reply = await getAIServiceReply(serviceType, question)
    await room.say(reply)
  }

  // 私聊消息处理(需在联系人白名单内)
  if (!room && await isContactWhiteListed(contact)) {
    const reply = await getAIServiceReply(serviceType, content)
    await contact.say(reply)
  }
}

3. 不同AI服务调用对比

DeepSeek API调用
// src/deepseek/index.js
import OpenAI from 'openai'

const openai = new OpenAI({
  apiKey: process.env.DEEPSEEK_FREE_TOKEN,
  baseURL: 'https://api.deepseek.com/v1'
})

export async function getDeepseekReply(prompt) {
  const response = await openai.chat.completions.create({
    model: 'deepseek-chat',  // 免费模型
    messages: [{ role: 'user', content: prompt }],
    max_tokens: 2048
  })
  return response.choices[0].message.content
}
Kimi API调用
// src/kimi/index.js
import axios from 'axios'

export async function getKimiReply(prompt) {
  const response = await axios.post('https://api.moonshot.cn/v1/chat/completions', {
    model: 'moonshot-v1-8k',  // 支持超长上下文
    messages: [{ role: 'user', content: prompt }],
    temperature: 0.3
  }, {
    headers: {
      'Authorization': `Bearer ${process.env.KIMI_API_KEY}`,
      'Content-Type': 'application/json'
    }
  })
  return response.data.choices[0].message.content
}
各AI服务对比表
服务名称免费额度上下文长度国内访问特色功能
DeepSeek100万tokens/月8k支持代码理解强
Kimi50万tokens/月128k支持长文档处理
讯飞星火200万tokens/月4k支持中文优化好
ChatGPT需付费128k需代理通用能力强
通义千问100万tokens/月8k支持阿里云生态

4. 群管理高级API

// 监听群聊邀请事件
bot.on('room-invite', async (invitation) => {
  const inviter = invitation.inviter()
  const roomTopic = await invitation.topic()
  
  // 验证邀请者是否在白名单
  if (WHITELIST.includes(await inviter.name())) {
    await invitation.accept()
    const room = await bot.Room.find({ topic: roomTopic })
    // 发送入群欢迎消息
    await room.say(`欢迎加入${roomTopic}!请先阅读群公告`)
  }
})

// 关键词监控与自动踢人
async function monitorRoomMessages(room, message) {
  const forbiddenWords = ['广告', '二维码', '加微信']
  if (forbiddenWords.some(word => message.includes(word))) {
    const talker = message.talker()
    await room.say(`@${await talker.name()} 请勿发送违规内容`)
    await room.del(talker)  // 移出群聊
  }
}

生产环境部署指南

Docker容器化部署

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

# 运行容器(挂载配置文件)
docker run -d --name wechat-bot \
  -v $(pwd)/.env:/app/.env \
  --restart always \
  wechat-bot

服务器持久化运行

# 使用PM2进程管理
npm install -g pm2
pm2 start cli.js --name "wechat-bot"

# 保存进程状态
pm2 save
pm2 startup

常见问题与解决方案

1. 微信登录失败

错误现象可能原因解决方案
扫码后无反应Web协议被限制切换为wechaty-puppet-xp协议
登录后秒退账号风控使用小号测试,减少操作频率
二维码无法生成依赖缺失安装puppeteer: npm install puppeteer

2. AI服务调用失败

// 错误处理最佳实践
export async function getAIServiceReply(serviceType, prompt) {
  try {
    const serviceMap = {
      'DeepSeek': getDeepseekReply,
      'Kimi': getKimiReply,
      'ChatGPT': getGptReply
    }
    return await serviceMap[serviceType](prompt)
  } catch (error) {
    console.error(`API调用失败: ${error.message}`)
    // 降级处理:返回预设回复
    return '当前AI服务暂时不可用,请稍后再试'
  }
}

高级功能扩展

1. 消息分片发送(解决长文本限制)

// src/wechaty/sendMessage.js
const MAX_MESSAGE_LENGTH = 500

async function splitAndSend(target, message) {
  if (message.length <= MAX_MESSAGE_LENGTH) {
    return await target.say(message)
  }
  
  // 分片发送
  const chunks = []
  for (let i = 0; i < message.length; i += MAX_MESSAGE_LENGTH) {
    chunks.push(message.slice(i, i + MAX_MESSAGE_LENGTH))
  }
  
  for (const chunk of chunks) {
    await target.say(chunk)
    await new Promise(resolve => setTimeout(resolve, 1000))  // 避免频率限制
  }
}

2. 异常账号检测功能

// 检测逻辑:发送特殊消息,监控是否被拒收
async function detectInvalidFriends() {
  const contacts = await bot.Contact.findAll()
  const invalidAccounts = []
  
  for (const contact of contacts) {
    if (contact.self() || contact.name() === '微信团队') continue
    
    try {
      // 发送空格消息(对方无感知)
      await contact.say(' ')
    } catch (error) {
      if (error.message.includes('rejected')) {
        invalidAccounts.push(await contact.name())
      }
    }
  }
  
  console.log('异常账号列表:', invalidAccounts)
  return invalidAccounts
}

总结与展望

WeChat Bot 提供了从消息处理到 AI 集成的完整解决方案,通过本文介绍的 API 调用示例,你可以快速构建个性化微信机器人。目前项目已支持 11 种 AI 服务,后续将计划添加:

  • 多模态消息处理(图片/语音识别)
  • 知识库对接(接入企业内部文档)
  • 插件系统(支持第三方功能扩展)

如果你在使用过程中遇到问题,欢迎提交 Issue 或参与项目贡献。记得收藏本文,关注项目更新,让你的微信机器人能力持续进化!

资源获取

  • 项目仓库:https://gitcode.com/GitHub_Trending/we/wechat-bot
  • API文档:项目内docs目录
  • 交流群:添加微信机器人后发送"加群"获取邀请
  • 免费API密钥申请地址:
    • DeepSeek: https://platform.deepseek.com
    • 讯飞星火: https://console.xfyun.cn
    • Kimi: https://platform.moonshot.cn

【免费下载链接】wechat-bot 🤖一个基于 WeChaty 结合 DeepSeek / ChatGPT / Kimi / 讯飞等Ai服务实现的微信机器人 ,可以用来帮助你自动回复微信消息,或者管理微信群/好友,检测僵尸粉等... 【免费下载链接】wechat-bot 项目地址: https://gitcode.com/GitHub_Trending/we/wechat-bot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值