wxbot

GitHub
660 132 较难 1 次阅读 5天前AGPL-3.0语言模型
AI 解读 由 AI 自动生成,仅供参考

WxBot 是一款功能丰富的个人微信机器人程序,旨在将微信打造成一个智能的多功能助手。它通过对接 Dean DLL、VLW 等底层框架,实现了消息的自动监听与处理,帮助用户轻松完成查天气、接入 ChatGPT 对话、设置定时任务以及公众号内容监控转发等日常操作,有效提升了微信使用的自动化水平。

该项目主要面向具备一定技术基础的开发者及极客用户。其核心亮点在于采用了“无侵入式”架构设计:WxBot 本身作为消息处理中间件,不直接提供微信 Hook 能力,而是通过标准 HTTP 接口与外部框架交互。这种设计使得用户可以灵活扩展插件或接入新的底层框架,只需实现简单接口即可定制专属功能。项目提供了详细的开发文档、Docker 部署方案及新手视频教程,便于用户快速上手进行二次开发。

需要注意的是,WxBot 仅供学习交流使用。由于涉及非官方协议,使用时需自行配置相关环境并承担潜在的账号风险,建议用户在合规前提下谨慎探索其技术潜力。

使用场景

某电商运营团队需要在一个 500 人的核心客户微信群中,实时响应天气预警、处理订单查询并定时推送促销信息。

没有 wxbot 时

  • 客服人员需 24 小时人工盯着群消息,一旦漏回客户关于“发货状态”的询问,极易引发投诉。
  • 遇到暴雨等突发天气,管理员必须手动查询后逐条复制粘贴通知,耗时且无法保证全员及时收到。
  • 每日固定的早报和晚间的促销活动依赖人工设闹钟发送,经常因忙碌而遗忘或时间不准。
  • 想要统计群内高频问题或监控特定公众号文章转发情况,只能靠人工截图整理,效率极低。

使用 wxbot 后

  • 部署查天气和 ChatGPT 聊天插件后,机器人能秒回客户的气象提醒及标准订单咨询,释放人力专注复杂客诉。
  • 利用公众号监控转发功能,当官方发布新品推文时,wxbot 自动抓取并带摘要转发至群聊,确保营销零延迟。
  • 通过设置定时任务插件,系统每天准时自动发送早安资讯与限时优惠链接,无需人工干预且从不缺席。
  • 基于其无侵入扩展架构,团队快速开发了自定义“积分查询”插件,直接对接内部数据库实现群内自助服务。

wxbot 将繁琐重复的社群运维工作转化为自动化流程,让个人微信也能拥有企业级的智能服务能力。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明

依赖
notes1. 本项目是基于 Go 语言开发的微信机器人中间件,非 Python 项目。 2. 运行前必须自行配置第三方的微信 Hook 软件(如 Dean DLL、VLW 框架等),本项目不提供 Hook 软件。 3. 需要配置 config.yaml 文件以对接 Hook 软件的回调地址。 4. 支持通过 Docker 部署或直接编译二进制文件运行。 5. 仅供学习交流,使用非官方机器人可能导致账号封禁。
python不适用 (项目基于 Go 语言)
Go (版本未明确,建议最新稳定版)
Docker (可选)
wxbot hero image

快速开始

WxBot

这是什么?

一个还算有意思的微信机器人项目,理想将其设计成一个多功能的机器人助手 😈

🔔 注意:

  1. 使用本项目之前需要您已经配置好相关的 微信的hook 类软件,那么只需要在这类软件上设置回调地址即可
  2. 本项目已接入Dean DLL千寻vlw三个框架,如果您有其他框架,可自行添加(参考framework目录,实现IFramework接口即可),或联系我添加
  3. 本项目不提供任何hook类软件,您需要利用搜索引擎自行寻找
  4. 本项目暂时只支持HTTP协议,关于websocket协议支持目前不考虑
  5. 简而言之,本项目是一个消息处理的中间件,微信消息监听获取是从框架获取
  6. 本项目仅供学习交流使用,不得用于商业用途,否则后果自负
  7. 使用本项目造成封禁账号等后果,本项目不承担任何责任,实际上您使用任何非官方的微信机器人都有可能造成账号封禁,所以请谨慎使用
  8. 如果您阅读了上面的内容,觉得没有问题,那么请继续阅读下面的内容

功能示例:

img

已对接框架

🎁 已接入框架,展开看👇

已对接API

🎁 已对接API,展开看👇
// IFramework 这是接入框架所定义的接口
type IFramework interface {
	// Callback 这是消息回调方法,vx框架回调消息转发给该Server
	Callback(func(*Event, IFramework))

	// GetMemePictures 获取表情包图片地址(迷因图)
	// return: 图片链接(网络URL或图片base64)
	GetMemePictures(message *Message) string

	// SendText 发送文本消息
	// toWxId: 好友ID/群ID
	// text: 文本内容
	SendText(toWxId, text string) error

	// SendTextAndAt 发送文本消息并@,只有群聊有效
	// toGroupWxId: 群ID
	// toWxId: 好友ID/群ID/all
	// toWxName: 好友昵称/群昵称,留空为自动获取
	// text: 文本内容
	SendTextAndAt(toGroupWxId, toWxId, toWxName, text string) error

	// SendImage 发送图片消息
	// toWxId: 好友ID/群ID
	// path: 图片路径
	SendImage(toWxId, path string) error

	// SendShareLink 发送分享链接消息
	// toWxId: 好友ID/群ID
	// title: 标题
	// desc: 描述
	// imageUrl: 图片链接
	// jumpUrl: 跳转链接
	SendShareLink(toWxId, title, desc, imageUrl, jumpUrl string) error

	// SendFile 发送文件消息
	// toWxId: 好友ID/群ID/公众号ID
	// path: 本地文件绝对路径
	SendFile(toWxId, path string) error

	// SendVideo 发送视频消息
	// toWxId: 好友ID/群ID/公众号ID
	// path: 本地视频文件绝对路径
	SendVideo(toWxId, path string) error

	// SendEmoji 发送表情消息
	// toWxId: 好友ID/群ID/公众号ID
	// path: 本地动态表情文件绝对路径
	SendEmoji(toWxId, path string) error

	// SendMusic 发送音乐消息
	// toWxId: 好友ID/群ID/公众号ID
	// name: 音乐名称
	// author: 音乐作者
	// app: 音乐来源(VLW需留空),酷狗/wx79f2c4418704b4f8,网易云/wx8dd6ecd81906fd84,QQ音乐/wx5aa333606550dfd5
	// jumpUrl: 音乐跳转链接
	// musicUrl: 网络歌曲直链
	// coverUrl: 封面图片链接
	SendMusic(toWxId, name, author, app, jumpUrl, musicUrl, coverUrl string) error

	// SendMiniProgram 发送小程序消息
	// toWxId: 好友ID/群ID/公众号ID
	// ghId: 小程序ID
	// title: 标题
	// content: 内容
	// imagePath: 图片路径, 本地图片路径或网络图片URL
	// jumpPath: 小程序点击跳转地址,例如:pages/index/index.html
	SendMiniProgram(toWxId, ghId, title, content, imagePath, jumpPath string) error

	// SendMessageRecord 发送消息记录
	// toWxId: 好友ID/群ID/公众号ID
	// title: 仅供电脑上显示用,手机上的话微信会根据[显示昵称]来自动生成 谁和谁的聊天记录
	// dataList:
	// 	- wxid: 发送此条消息的人的wxid
	// 	- nickName: 显示的昵称(可随意伪造)
	// 	- timestamp: 10位时间戳
	// 	- msg: 消息内容
	SendMessageRecord(toWxId, title string, dataList []map[string]interface{}) error

	// SendMessageRecordXML 发送消息记录(XML方式)
	// toWxId: 好友ID/群ID/公众号ID
	// xmlStr: 消息记录XML代码
	SendMessageRecordXML(toWxId, xmlStr string) error

	// SendFavorites 发送收藏消息
	// toWxId: 好友ID/群ID/公众号ID
	// favoritesId: 收藏夹ID
	SendFavorites(toWxId, favoritesId string) error

	// SendXML 发送XML消息
	// toWxId: 好友ID/群ID/公众号ID
	// xmlStr: XML代码
	SendXML(toWxId, xmlStr string) error

	// SendBusinessCard 发送名片消息
	// toWxId: 好友ID/群ID/公众号ID
	// targetWxId: 目标用户ID
	SendBusinessCard(toWxId, targetWxId string) error

	// AgreeFriendVerify 同意好友验证
	// v3: 验证V3
	// v4: 验证V4
	// scene: 验证场景
	AgreeFriendVerify(v3, v4, scene string) error

	// InviteIntoGroup 邀请好友加入群组
	// groupWxId: 群ID
	// wxId: 好友ID
	// typ: 邀请类型,1-直接拉,2-发送邀请链接
	InviteIntoGroup(groupWxId, wxId string, typ int) error

	// GetObjectInfo 获取对象信息
	// wxId: 好友ID/群ID/公众号ID
	// return: User, error
	GetObjectInfo(wxId string) (*User, error)

	// GetFriends 获取好友列表
	// isRefresh: 是否刷新 false-从缓存中获取,true-重新遍历二叉树并刷新缓存
	// return: []*User, error
	GetFriends(isRefresh bool) ([]*User, error)

	// GetGroups 获取群组列表
	// isRefresh: 是否刷新 false-从缓存中获取,true-重新遍历二叉树并刷新缓存
	// return: []*User, error
	GetGroups(isRefresh bool) ([]*User, error)

	// GetGroupMembers 获取群成员列表
	// groupWxId: 群ID
	// isRefresh: 是否刷新 false-从缓存中获取,true-重新遍历二叉树并刷新缓存
	// return: []*User, error
	GetGroupMembers(groupWxId string, isRefresh bool) ([]*User, error)

	// GetMPs 获取公众号订阅列表
	// isRefresh: 是否刷新 false-从缓存中获取,true-重新遍历二叉树并刷新缓存
	// return: []*User, error
	GetMPs(isRefresh bool) ([]*User, error)
}

已有插件

🎁 已有插件 👇

指令大全

点击查看机器人有哪些指令

如何使用?

本地运行

  1. 克隆代码
git clone https://github.com/yqchilde/wxbot.git
  1. 配置config.yaml

  2. 调试运行或编译

    • 调试运行执行 go run main.go
    • 编译执行 make release

Releases包

  1. Releases下载对应系统的编译包,解压后执行二进制文件即可

Docker运行

  1. 方式一:一键脚本启动
bash -c "$(curl -fsSL https://raw.fastgit.org/yqchilde/wxbot/hook/docker/run.sh)"
  1. 方式二:命令启动,注意提前配置config.yaml,否则会报错
docker run -d \
  --name="wxbot" \
  -p 9528:9528 \
  -v $(pwd)/config.yaml:/app/config.yaml \
  -v $(pwd)/data:/app/data \
  yqchilde/wxbot:latest

Actions编译

  1. fork本项目
  2. https://github.com/settings/tokens 这里获取一个token用于给actions使用
  3. 给项目添加一个秘钥,名字为WXBOT_TOKEN,值为上面获取的token
  4. 自行创建一个tag,如v1.0.0,然后等待actions编译完成,编译完成后会在release中生成对应的wxbot文件

如何开发?

制作插件或接入其他框架

🤔如果您想要扩展自己的插件,可以参考plugins目录下的插件

🤔如果您想要扩展其他框架,可以参考frameworks目录下的框架

🤔如果您需要增减插件,可编辑 plugins.yaml 中代码中去掉对应插件的导入或者添加对应插件的导入,照猫画虎即可

🔴修改完plugins.yaml后需要执行一次make pluginsgo generate -tags plugins ./engine/plugins生成对应的plugins.go文件再去编译

- "github.com/yqchilde/wxbot/plugins/baidubaike"   # 百度百科
- "github.com/yqchilde/wxbot/plugins/chatgpt"      # GPT聊天
- "github.com/yqchilde/wxbot/plugins/crazykfc"     # 肯德基疯狂星期四骚话
- "github.com/yqchilde/wxbot/plugins/ghmonitor"    # 公众号消息监控转发
- "github.com/yqchilde/wxbot/plugins/manager"      # 群组管理相关
- "github.com/yqchilde/wxbot/plugins/memepicture"  # 表情包原图
- "github.com/yqchilde/wxbot/plugins/moyuban"      # 摸鱼办
- "github.com/yqchilde/wxbot/plugins/pinyinsuoxie" # 拼音缩写翻译
- "github.com/yqchilde/wxbot/plugins/plmm"         # 漂亮妹妹
- "github.com/yqchilde/wxbot/plugins/weather"      # 天气查询
- "github.com/yqchilde/wxbot/plugins/zaobao"       # 每日早报
- "github.com/yqchilde/wxbot/plugins/wordcloud"    # 聊天热词
- "github.com/yqchilde/wxbot/plugins/chaid"        # 查wxId
- "github.com/yqchilde/wxbot/plugins/youdaofanyi"  # 有道翻译

参考案例

查看更多使用案例

调试-环境变量

环境变量名 变量类型 说明
DEBUG bool 优先级大于其他DEBUG_开头的变量,开启后开启所有DEBUG模式
用于调试HTTP请求和调用日志文件名和行号
DEBUG_LOG bool 用于调试调用日志文件名和行号

提交Pr注意项

  1. import包时顺序要规范,先import标准库,再import第三方库,最后import自己的库,例如:
import (
	"errors"
	"fmt"
	"strings"
	"sync"
	"time"

	"github.com/PullRequestInc/go-gpt3.

	"github.com/yqchilde/wxbot/engine/control.
	"github.com/yqchilde/wxbot/engine/pkg/log.
	"github.com/yqchilde/wxbot/engine/pkg/sqlite.
	"github.com/yqchilde/wxbot/engine/robot.
)
  1. 若提交的是插件,请在plugins.yaml中添加对应的插件
  2. 若提交的是插件,请在README.md中已有插件部分添加对应的插件
  3. 若提交的是插件,请在plugins/README.md中添加对应的插件
  4. 提交代码请先make pluginsgo generate -tags plugins ./engine/plugins 生成对应的plugins.go文件

Feature

开发计划:🕒 开发计划
如果您感觉这个项目有意思,麻烦帮我点一下star
这个项目待(不)补(完)充(善)很多东西,由于工作关系会抽出时间弄,感谢您发现并使用此仓库

如果您有疑惑可以加Q群讨论

打个广告

Thanks

JetBrains 开源证书支持

yqchilde/wxbot 项目一直以来都是在 JetBrains 公司旗下的 GoLand 集成开发环境中进行开发,基于 free JetBrains Open Source license(s) 正版免费授权,在此表达我的谢意。

开源项目

  • 非Hook版机器人核心由 openwechat SDK实现,在nohook分支,已暂停维护

  • Hook版机器人框架我使用的是 《我的框架》已跑路,现在用的是千寻,Dean DLL,为hook分支

  • hook分支大量借鉴了一个十分优秀的项目ZeroBot-Plugin的设计方案 👍🏻,其中很多基础代码来自ZeroBot-Plugin,在此基础上扩展了支持wechat的方式,非常感谢,Thanks♪(・ω・)ノ

License

AGPL-3.0 license. See the LICENSE file for details.

版本历史

v1.7.22023/07/10
v1.7.12023/07/10
v1.7.02023/06/01
v1.6.102023/03/21
v1.6.92023/03/20
v1.6.82023/03/19
v1.6.72023/03/13
v1.6.62023/03/13
v1.6.52023/03/13
v1.6.42023/03/12
v1.6.32023/03/10
v1.6.22023/03/09
v1.6.12023/03/09
v1.6.02023/03/09
v1.5.42023/03/08
v1.5.32023/03/06
v1.5.22023/03/06
v1.5.12023/03/06
v1.5.02023/03/03
v1.4.82023/03/03

常见问题

相似工具推荐

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

74.9k|★★★☆☆|今天
语言模型图像开发框架

OpenHands

OpenHands 是一个专注于 AI 驱动开发的开源平台,旨在让智能体(Agent)像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点,通过自动化流程显著提升开发速度。 无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员,还是需要快速原型验证的技术团队,都能从中受益。OpenHands 提供了灵活多样的使用方式:既可以通过命令行(CLI)或本地图形界面在个人电脑上轻松上手,体验类似 Devin 的流畅交互;也能利用其强大的 Python SDK 自定义智能体逻辑,甚至在云端大规模部署上千个智能体并行工作。 其核心技术亮点在于模块化的软件智能体 SDK,这不仅构成了平台的引擎,还支持高度可组合的开发模式。此外,OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩,证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能,支持与 Slack、Jira 等工具集成,并提供细粒度的权限管理,适合从个人开发者到大型企业的各类用户场景。

70.6k|★★★☆☆|今天
语言模型Agent开发框架