DPbot是一个基于Python的机器人框架,支持插件化开发,提供了丰富的功能接口,可基于此框架拓展为群活跃助手、台账机器人、定时推送机器人、ai画图机器人、智能客服、返利机器人。
欢迎加入我们的互助交流群,和更多开发者一起交流、答疑解惑、分享经验!
- 🔌 插件化架构,易于扩展
- 🚀 异步处理,收发消息队列处理,避免消息丢失
- 🖼️ 支持图片、视频、音频等多媒体消息处理
- 🎵 支持语音消息转换和处理
- 📝 支持群聊和私聊消息处理
- ⚙️ 支持群聊设定模式,支持特定群聊模式插件口令启停
- ⏭️ 历史消息跳过
- 🔄 支持二维码登录
- 💾 SQLite数据库支持
- 📊 完整的日志系统
- 🛠️ 丰富的工具类支持
- Python 3.11+
- Windows 10+ 或 Linux (ubuntu:24.04)
- 2GB+ RAM
- 500MB+ 磁盘空间
项目采用模块化设计,主要包含以下核心组件:
-
📂 Core/
- 🔧 核心引擎模块,消息队列和事件处理系统 (MessageHandler.py)
- 🔌 插件基类和管理器 (PluginBase.py, PluginManager.py)
- 🚦 消息字段封装处理,可适配WCF/NGCBOT (msg.py)
- 🔗 登录流程处理 (LoginManager.py)
-
📂 Plugins/
- 🎮 内置功能插件 (Admin/, Menu/, DailyPoint/, RandomPic/, RandomVideo/, ReqMusic/, DpWenan/, ShortVideoParse/,DpTools/,DemoPlugin/)
- 🔧 自定义插件工具接口 (_Tools/)
-
📂 WeChatApi/
- 🤖 协议接入层
- 📡 消息收发接口
- 🔐 登录管理
- 🔄 二次封装接口,基于其他接口进行封装,例如(获取昵称、获取头像)(CommonApi.py)
-
📂 DbServer/
- 💾 数据库操作封装 (SQLite)
- 📊 数据模型定义
- 🔄 数据同步管理
-
📂 Config/
- ⚙️ 全局配置文件 ,可配置管理员wxid、是否跳过历史信息、日志管理(Config.toml)
- 📝 日志文件 (logs/app.log, logs/error.log)
- 🔐 登录配置 ,可配置协议运行IP、端口、机器人wxid(首次登录会自动配置,不需自处理)(Login.toml)
- 插件配置文件,配置插件启动模式(plugininit.xlsx)
-
系统工作流程:
- 通过 WeChatApi 模块接收消息
- Core 引擎进行消息分发和处理
- Plugins 系统处理具体业务逻辑
- DbServer 负责数据持久化
- Config 模块提供全局配置支持
- Admin: 管理员插件
- Menu: 菜单插件
- DailyPoint: 签到插件(后续可拓展积分功能)
- RandomPic: 随机图片插件
- RandomVideo: 随机视频插件
- ReqMusic: 点歌插件
- DpWenan: 文案插件
- ShortVideoParse:短视频解析插件
- ReqMusic:点歌插件
- 在
Plugins目录下创建新的插件目录 - 创建插件主文件(例如:
DemoPlugin.py) - 创建插件配置文件(例如:
config.toml) - 继承
PluginBase类并实现必要方法:
from Plugins._Tools import Tools from Config.logger import logger import Config.ConfigServer as Cs from Core.PluginBase import PluginBase class DemoPlugin(PluginBase): def __init__(self): super().__init__() self.name = "DemoPlugin"#此名称需与App/Config/plugininit.xlsx中名称一致 self.description = "插件描述" self.version = "1.0.0" self.author = "作者名" self.tools = Tools() self.configData = self.tools.returnConfigData(os.path.dirname(__file__)) self.word = self.configData.get('word') async def handle_message(self, msg) -> bool: # 处理群聊消息的逻辑 pass async def handle_private_message(self, msg): # 处理私聊消息的逻辑 pass
项目使用SQLite数据库,包含以下数据表:
- admin: 管理员配置
- plugin_config: 插件配置
- 支持linux直接运行或者docker运行
- 熟练掌握linux基础操作的朋友,可私我免费获取Wxapi的compose文件,自行构建项目,无教程,没基础就算了,没空教
- star项目是获得永久授权的前置条件
- star项目是获得永久授权的前置条件
- star项目是获得永久授权的前置条件
- 确认是否安装
python,如无,自行百度安装 8059、6379端口是否占用,如占用可自行关闭或者修改Wxapi-conf-app.conf改为其他端口
- 进入
Redis文件夹,双击redis-server.exe
- 进入
Wxapi文件夹,双击wxapi_win64_v1_0_5.exe - 记录缘分码,后面用于插件兑换永久授权
- 进入
App文件夹 - 安装依赖,
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple然后python.exe -m pip install --upgrade pip然后pip install -r requirements-win.txt - 其中处理语音需要依赖
ffmpeg,自行百度安装 - 自定义设备信息,修改文件App/WeChatApi/LoginApi.py,
-
其中DeviceID和DeviceName随便修改一下,不要使用这个,否则会触发风控风险(疑似多人共用一台设备)
async def getIpadQr(self) -> Optional[Dict]: """ 获取二维码 """ try: payload = { "DeviceID": "123456", "DeviceName": "iPhone18plus", "Proxy": { "ProxyIp": "", "ProxyPassword": "", "ProxyUser": "" } } return await sendPostReq("/Login/LoginGetQR", payload) except Exception as e: logger.error(f"获取二维码失败: {e}") return None - 启动机器人程序,CMD命令行下或者其他IDE程序中输入:
python main.py - 首次登录,输入2
- 修改机器人代码时只需关闭重启App程序即可,Redis和Wxapi保持常开即可
- 修改代码后重启App程序,输入1,跳过登录即可,无需重复扫码
- 必须配置管理员wxid,用来控制机器人
App/Config/Config.toml
- 启动机器人程序,CMD命令行下或者其他IDE程序中输入:
python main.py - 首次登录,输入2,手机扫码
- 建一个测试群,绑定群模式,类似与白名单一类,具体口令可再
App/Plugin/Admin/config.toml,例如发送这群可以,即绑定custom模式 - 再该群进行插件初始化操作,发送
插件初始化,后面所有custom的群都会启动对应的插件 - 修改插件配置文件,
App/Config/plugininit.xlsx,在此修改状态 - 到此基本可以体验现有插件了,有问题可行解决或者进群寻求群友帮助
- 相关口令如下,可自行前往各插件的
config.toml查看 - 签到、热搜、早安、舔狗、菜单、点歌 黄昏、666、色色、视频、等等
- 娱乐接口:https://api.dudunas.top
- 项目中的多数插件需要依赖dpkey,可前往上述站点进行获取或自行更换,dpkey免费获取
-
ffmpeg相关错误
- 确保ffmpeg正确安装并添加到PATH
- Windows用户检查环境变量设置
-
图片处理相关错误
- 检查系统依赖是否完整安装
- 确认Python Pillow库安装正确
-
登录问题
- 检查网络连接
- 确认Login.toml配置正确
- 查看日志文件排查具体错误
-
缺失依赖
- 例如
No module named 'pysilk',可尝试pip install pysilk-mod==1.6.4,如继续报错,可尝试将本项目下Help/pysilk文件夹复制到你的python目录下的Lib/下,然后尝试运行项目
- 例如
- 定期更新依赖包
- 不要将配置文件提交到版本控制系统
- 使用环境变量存储敏感信息
- 定期备份数据库
- 我为人人,人人为我,欢迎有志同僚共同开发插件
- 关于Wxapi,避免泛滥导致无法使用,启动时会进行缘分鉴权,初始缘分30天,群内可续杯介意勿用
- 持续提交插件、介绍定制业务、热心帮助群友、打赏等友善行为可获得无限期延长缘分
- Fork Star项目
- 创建特性分支
- 提交更改
- 推送到分支
- 创建 Pull Request
- star项目是获得永久授权的前置条件
MIT License
大鹏
- 修复已知问题
- 最新版本
- 完善插件系统
- 优化登录流程
- 增加更多API支持
- 问题反馈:请提交Issue
- 功能建议:请提交Issue或PR
感谢所有贡献者的支持!