{"_id":"wechat-bot","_rev":"13-2120fdf8c064f01c303d355aaf2337cd","name":"wechat-bot","dist-tags":{"latest":"1.0.2"},"versions":{"0.0.1":{"name":"wechat-bot","version":"0.0.1","keywords":["wechat","bot","wechat-bot","weixin"],"author":{"name":"Rogerz Zhang","email":"rogerz.zhang@gmail.com"},"license":"BSD-3-Clause","_id":"wechat-bot@0.0.1","maintainers":[{"name":"rogerz","email":"rogerz.zhang@gmail.com"}],"homepage":"https://github.com/rogerz/wechat-bot","bugs":{"url":"https://github.com/rogerz/wechat-bot/issues"},"dist":{"shasum":"28c9f5509c0d6b54da99c2fd5acbab62be108a05","tarball":"https://registry.npmjs.org/wechat-bot/-/wechat-bot-0.0.1.tgz","integrity":"sha512-rvSlnwruvrKmuZbuBoZNJqaF0K4ncTzkmrLkjA9N0DFI0B503dI3cRn2TLbLewF7oUTFsJEmrO3Q/+CRsY6uvw==","signatures":[{"sig":"MEUCIQD2GxKUAZR0lHWDnlZns9yakS3AyoJ0oye6HKhi3ttUcQIgOYIuBHGIdaiE1QpvihYk79P6wsJXBR/V0Oc3tMP74jI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","scripts":{"test":"grunt ci"},"_npmUser":{"name":"rogerz","email":"rogerz.zhang@gmail.com"},"repository":{"url":"https://github.com/rogerz/wechat-bot","type":"git"},"_npmVersion":"1.4.3","description":"middleware framework for creating wechat bot","directories":{},"dependencies":{"debug":"^0.7.4"},"devDependencies":{"ejs":"^0.8.5","chai":"~1.8.1","grunt":"~0.4.1","wechat":"^0.6.7","connect":"^2.14.1","grunt-cli":"~0.1.9","supertest":"^0.9.0","grunt-mocha-cli":"~1.1.0","grunt-complexity":"~0.1.3","grunt-contrib-watch":"~0.5.3","grunt-contrib-jshint":"~0.6.4"}},"0.1.0":{"name":"wechat-bot","version":"0.1.0","keywords":["wechat","bot","wechat-bot","weixin"],"author":{"name":"Rogerz Zhang","email":"rogerz.zhang@gmail.com"},"license":"BSD-3-Clause","_id":"wechat-bot@0.1.0","maintainers":[{"name":"rogerz","email":"rogerz.zhang@gmail.com"}],"homepage":"https://github.com/rogerz/wechat-bot","bugs":{"url":"https://github.com/rogerz/wechat-bot/issues"},"dist":{"shasum":"e09fa71475a994ada8a820bc552801c8742bd626","tarball":"https://registry.npmjs.org/wechat-bot/-/wechat-bot-0.1.0.tgz","integrity":"sha512-hkqJ6MJNRnStRb8sJsn2nFXEiwxs3M8+/26tPzbuIbcyddNoxGDrCWWgiRX+UzU4KBif5s4llTMrPGcJkCIffw==","signatures":[{"sig":"MEUCIQDqGN2/AvGddPB8i5rDv4pgpNQ8eW6n8Yfpr/4xsmWz+gIgQhYmj4nXJfyOqLAYAGpy+gts0ORpK8hhRTqbUdpJUfk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","scripts":{"test":"grunt ci"},"_npmUser":{"name":"rogerz","email":"rogerz.zhang@gmail.com"},"repository":{"url":"https://github.com/rogerz/wechat-bot","type":"git"},"_npmVersion":"1.4.3","description":"middleware framework for creating wechat bot","directories":{},"dependencies":{"debug":"^0.7.4"},"devDependencies":{"ejs":"^0.8.5","chai":"~1.8.1","grunt":"~0.4.1","wechat":"^0.6.7","connect":"^2.14.1","grunt-cli":"~0.1.9","supertest":"^0.9.0","grunt-mocha-cli":"~1.1.0","grunt-complexity":"~0.1.3","grunt-contrib-watch":"~0.5.3","grunt-contrib-jshint":"~0.6.4"}},"0.1.1":{"name":"wechat-bot","version":"0.1.1","keywords":["wechat","bot","wechat-bot","weixin"],"author":{"name":"Rogerz Zhang","email":"rogerz.zhang@gmail.com"},"license":"BSD-3-Clause","_id":"wechat-bot@0.1.1","maintainers":[{"name":"rogerz","email":"rogerz.zhang@gmail.com"}],"homepage":"https://github.com/rogerz/wechat-bot","bugs":{"url":"https://github.com/rogerz/wechat-bot/issues"},"dist":{"shasum":"b97367fae41ce07bfa397182cd706e443866c919","tarball":"https://registry.npmjs.org/wechat-bot/-/wechat-bot-0.1.1.tgz","integrity":"sha512-4tGUDiMgOMV0lCm+A2VOdfr6w6o92AMAd4dlth8LX+lJwudv3QPO1WrFd6mnk5c+XI7rVB5dY5OY6CB2wkrSuA==","signatures":[{"sig":"MEUCIQCxllSx37JYqSJPBWYNuMoOEIDK5gH1bYKeQ77SVK5sIgIgC/pvm4tG6h99KwF6x80lnFHCqoHg2lBCdDa0R9pGM6k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","scripts":{"test":"grunt ci"},"_npmUser":{"name":"rogerz","email":"rogerz.zhang@gmail.com"},"repository":{"url":"https://github.com/rogerz/wechat-bot","type":"git"},"_npmVersion":"1.4.3","description":"middleware framework for creating wechat bot","directories":{},"dependencies":{"debug":"^0.7.4","wechat":"^0.6.7"},"devDependencies":{"ejs":"^0.8.5","chai":"~1.8.1","grunt":"~0.4.1","wechat":"^0.6.7","connect":"^2.14.1","grunt-cli":"~0.1.9","supertest":"^0.9.0","grunt-mocha-cli":"~1.1.0","grunt-complexity":"~0.1.3","grunt-contrib-watch":"~0.5.3","grunt-contrib-jshint":"~0.6.4"}},"1.0.0":{"name":"wechat-bot","version":"1.0.0","author":{"name":"荣顶"},"license":"ISC","_id":"wechat-bot@1.0.0","maintainers":[{"name":"rogerz","email":"rogerz.zhang@gmail.com"},{"name":"wangrongding","email":"wangrongding@qq.com"}],"bin":{"wechat-bot":"cli.js"},"dist":{"shasum":"96385edc59db26b14be8794fea675b0755e835e9","tarball":"https://registry.npmjs.org/wechat-bot/-/wechat-bot-1.0.0.tgz","fileCount":34,"integrity":"sha512-uMOCat8PDyW3L//kkT7k/KAOh7z73nqKxR5b914ZhtNqoqJeJubw6Ga4onF3qGQ9eaEF+j4fm4sEpgDngCZXLQ==","signatures":[{"sig":"MEQCIGO88TIMkR6k3lg/kJHbmsBD0x4kWlHWIxamTpHLC38dAiAleSP0buMQTh/lsgX15VNBTzNHwnjNml3qdF3PN8VcBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64967},"main":"index.js","type":"module","gitHead":"b2847a0cd4e15673865c38ce636d61eaedb1a729","scripts":{"dev":"node ./cli.js","test":"node ./src/wechaty/testMessage.js","start":"node ./cli.js","format":"prettier --write ./src","test-dify":"node ./src/dify/__test__.js","test-kimi":"node ./src/kimi/__test__.js","test-openai":"node ./src/openai/__test__.js","test-xunfei":"node ./src/xunfei/__test__.js"},"_npmUser":{"name":"wangrongding","email":"wangrongding@qq.com"},"_npmVersion":"11.6.1","description":"wechat-bot","directories":{},"lint-staged":{"*.{js,ts,md}":["prettier --write"]},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.16.0","axios":"^1.6.8","dotenv":"^16.4.5","openai":"^4.52.0","remark":"^14.0.2","chatgpt":"^2.5.2","wechaty":"^1.20.2","inquirer":"^9.2.16","commander":"^12.0.0","crypto-js":"^4.2.0","p-timeout":"^6.0.0","strip-markdown":"^5.0.0","qrcode-terminal":"^0.12.0","wechaty-puppet-wechat":"^1.18.4","wechaty-puppet-wechat4u":"^1.14.14"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.11","prettier":"^3.3.3","puppeteer":"13.5.1","lint-staged":"^15.2.7","puppeteer-core":"13.5.1"},"_npmOperationalInternal":{"tmp":"tmp/wechat-bot_1.0.0_1772037175083_0.9502148723228752","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"wechat-bot","version":"1.0.1","author":{"name":"荣顶"},"license":"ISC","_id":"wechat-bot@1.0.1","maintainers":[{"name":"rogerz","email":"rogerz.zhang@gmail.com"},{"name":"wangrongding","email":"wangrongding@qq.com"}],"homepage":"https://github.com/wangrongding/wechat-bot","bin":{"wb":"cli.js","wechat-bot":"cli.js"},"dist":{"shasum":"7b15eb666f956648fb6cd4380b83c0b127b728ca","tarball":"https://registry.npmjs.org/wechat-bot/-/wechat-bot-1.0.1.tgz","fileCount":34,"integrity":"sha512-TMOioesIFgvgcXgVEFFrq65ywiGm9knCvFJpan3836BagF3TlmRKyVN3crrnn0V0w4uh5JhJoRp/OX2zvSW6jg==","signatures":[{"sig":"MEUCIQCmrOI1oCTVN13C9iaeYKIqOs4BjYNSbNGRKive/XQ8/wIgV9eDI3Z2TAaOx7te36Y+HGMuUF/9k8yRCA6KoIrNpLA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65678},"main":"index.js","type":"module","gitHead":"d52009a30149bd2e57a8d43ec6c2099a070c5ba7","scripts":{"dev":"node ./cli.js","test":"node ./src/wechaty/testMessage.js","start":"node ./cli.js","format":"prettier --write ./src","test-dify":"node ./src/dify/__test__.js","test-kimi":"node ./src/kimi/__test__.js","test-openai":"node ./src/openai/__test__.js","test-xunfei":"node ./src/xunfei/__test__.js"},"_npmUser":{"name":"wangrongding","email":"wangrongding@qq.com"},"_npmVersion":"11.6.1","description":"wechat-bot","directories":{},"lint-staged":{"*.{js,ts,md}":["prettier --write"]},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.16.0","axios":"^1.6.8","dotenv":"^16.4.5","openai":"^4.52.0","remark":"^14.0.2","chatgpt":"^2.5.2","wechaty":"^1.20.2","inquirer":"^9.2.16","commander":"^12.0.0","crypto-js":"^4.2.0","p-timeout":"^6.0.0","strip-markdown":"^5.0.0","qrcode-terminal":"^0.12.0","wechaty-puppet-wechat":"^1.18.4","wechaty-puppet-wechat4u":"^1.14.14"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.11","prettier":"^3.3.3","puppeteer":"13.5.1","lint-staged":"^15.2.7","puppeteer-core":"13.5.1"},"_npmOperationalInternal":{"tmp":"tmp/wechat-bot_1.0.1_1772037416623_0.9909546477318403","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"wechat-bot","version":"1.0.2","description":"wechat-bot","main":"index.js","type":"module","scripts":{"dev":"node ./cli.js","format":"prettier --write ./src","start":"node ./cli.js","test":"node ./src/wechaty/testMessage.js","test-openai":"node ./src/openai/__test__.js","test-xunfei":"node ./src/xunfei/__test__.js","test-kimi":"node ./src/kimi/__test__.js","test-dify":"node ./src/dify/__test__.js"},"lint-staged":{"*.{js,ts,md}":["prettier --write"]},"bin":{"wb":"cli.js","wechat-bot":"cli.js"},"homepage":"https://github.com/wangrongding/wechat-bot/","repository":{"type":"git","url":"git+https://github.com/wangrongding/wechat-bot.git"},"author":{"name":"荣顶"},"license":"ISC","dependencies":{"axios":"^1.6.8","chatgpt":"^2.5.2","commander":"^12.0.0","crypto-js":"^4.2.0","dotenv":"^16.4.5","inquirer":"^9.2.16","openai":"^4.52.0","p-timeout":"^6.0.0","qrcode-terminal":"^0.12.0","remark":"^14.0.2","strip-markdown":"^5.0.0","wechaty":"^1.20.2","wechaty-puppet-wechat":"^1.18.4","wechaty-puppet-wechat4u":"^1.14.14","ws":"^8.16.0"},"devDependencies":{"husky":"^9.0.11","lint-staged":"^15.2.7","prettier":"^3.3.3","puppeteer":"13.5.1","puppeteer-core":"13.5.1"},"gitHead":"d52009a30149bd2e57a8d43ec6c2099a070c5ba7","_id":"wechat-bot@1.0.2","bugs":{"url":"https://github.com/wangrongding/wechat-bot/issues"},"_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-WWuTo0PPVdCByM1G2N/qHe9eqXXG2QzKsXxhlrMtYKvRJjvCyJPH9w0bvbclXF/EeEnRS2jaLhNlWjTUfHetig==","shasum":"efca0717094215c8915be107bb2afa470ae4ebc5","tarball":"https://registry.npmjs.org/wechat-bot/-/wechat-bot-1.0.2.tgz","fileCount":34,"unpackedSize":65781,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIERmuDAhwKztuV3z5Ja3iPDvTggsBKv2XZbPcKpUa25fAiEA2iq98RfVxxTQfO3UwICafJospnlRvdms34Dk/kBC6sY="}]},"_npmUser":{"name":"wangrongding","email":"wangrongding@qq.com"},"directories":{},"maintainers":[{"name":"rogerz","email":"rogerz.zhang@gmail.com"},{"name":"wangrongding","email":"wangrongding@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/wechat-bot_1.0.2_1772037558786_0.5711277862564961"},"_hasShrinkwrap":false}},"time":{"created":"2014-03-08T05:34:12.666Z","modified":"2026-02-25T16:39:19.037Z","0.0.1":"2014-03-08T05:34:12.666Z","0.1.0":"2014-03-16T03:53:19.637Z","0.1.1":"2014-03-16T04:21:54.445Z","1.0.0":"2026-02-25T16:32:55.255Z","1.0.1":"2026-02-25T16:36:56.819Z","1.0.2":"2026-02-25T16:39:18.933Z"},"author":{"name":"荣顶"},"license":"ISC","homepage":"https://github.com/wangrongding/wechat-bot/","description":"wechat-bot","maintainers":[{"name":"rogerz","email":"rogerz.zhang@gmail.com"},{"name":"wangrongding","email":"wangrongding@qq.com"}],"readme":"# WeChat Bot\n\n一个 基于 `chatgpt` + `wechaty` 的微信机器人\n\n可以用来帮助你自动回复微信消息，或者管理微信群/好友.\n\n`简单`，`好用`，`2分钟（4 个步骤）` 就能玩起来了。🌸 如果对您有所帮助，请点个 Star ⭐️ 支持一下。\n\n<div align='center'>\n  <a href=\"https://trendshift.io/repositories/11077\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/11077\" alt=\"wangrongding%2Fwechat-bot | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</div>\n\n## 贡献者们\n\n<a href=\"https://github.com/wangrongding/wechat-bot/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=wangrongding/wechat-bot&columns=20\" />\n</a>\n\n欢迎大家提交 PR 接入更多的 ai 服务(比如扣子等...)，积极贡献更好的功能实现，让 wechat-bot 变得更强！\n\n## 注意：最近微信对此审查变得非常严格，使用默认的协议有微信警告或者封号的风险，请大家谨慎使用，关于 padlocal ，这个协议的作者没有继续维护，大家可以自行切换更稳定的协议。  \n\n![](https://github.com/user-attachments/assets/1c312cf4-73d8-44a1-8f36-5ea288ac0aa4)\n\n## 使用前需要配置的 AI 服务（目前支持 9 种，可任选其一）\n\n- deepseek\n\n  获取自己的 `api key`，地址戳这里 👉🏻 ：[deepseek 开放平台](https://platform.deepseek.com/usage)  \n  将获取到的`api key`填入 `.evn` 文件中的 `DEEPSEEK_FREE_TOKEN` 中。\n\n- ChatGPT\n\n  先获取自己的 `api key`，地址戳这里 👉🏻 ：[创建你的 api key](https://platform.openai.com/settings/organization/api-keys)\n\n  **注意：这个是需要去付费购买的，很多人过来问为什么请求不通，请确保终端走了代理，并且付费购买了它的服务**\n\n  ```sh\n  # 执行下面命令，拷贝一份 .env.example 文件为 .env\n  cp .env.example .env\n  # 填写完善 .env 文件中的内容\n  OPENAI_API_KEY='你的key'\n  ```\n\n- 豆包\n\n  豆包最新的Doubao-Seed-1.6模型，支持输入图片和深度思考，而且每个模型都有 50 万的免费tokens。在火山引擎注册登录账号，可以选择最新的Doubao-Seed-1.6-thinking模型，选择“API接入” -> “获取 API Key”。\n\n  ```sh\n  # 拷贝 .env.example 文件为 .env\n  cp .env.example .env\n  # 修改 .env 文件中的内容\n  DOUBAO_API_KEY='你的key'\n  # 简单测试API是否可用\n  node src/doubao/__test__.js\n  ```\n\n- 通义千问\n\n  通义千问是阿里云提供的 AI 服务，获取到你的 api key 之后, 填写到 .env 文件中即可\n\n  ```sh\n  # 执行下面命令，拷贝一份 .env.example 文件为 .env\n  cp .env.example .env\n  # 填写完善 .env 文件中的内容\n  # 通义千问, URL 包含 uri 路径\n  TONGYI_URL = \"https://dashscope.aliyuncs.com/compatible-mode/v1\"\n  # 通义千问的 API_KEY\n  TONGYI_API_KEY = ''\n  # 通义千问使用的模型\n  TONGYI_MODEL='qwen-plus'\n  ```\n\n- 科大讯飞\n\n  新增科大讯飞，去这里申请一个 key：[科大讯飞](https://console.xfyun.cn/services/bm35)，每个模型都有 200 万的免费 token ，感觉很难用完。  \n  注意： 讯飞的配置文件几个 key，别填反了，很多人找到我说为什么不回复，都是填反了。  \n  而且还有一个好处就是，接口不会像 Kimi 一样限制请求频次，相对来说稳定很多。  \n  服务出错可参考： [issues/170](https://github.com/wangrongding/wechat-bot/issues/170), [issues/180](https://github.com/wangrongding/wechat-bot/issues/180)\n\n- Kimi （请求限制较严重）\n\n  可以去 ： [kimi apikey](https://platform.moonshot.cn/console/api-keys) 获取你的 key  \n  最近比较忙，大家感兴趣可以提交 PR，我会尽快合并。目前 Kimi 刚刚集成，还可以实现上传文件等功能，然后有其它较好的服务也可以提交 PR 。\n\n- dify\n\n  地址：[dify](https://dify.ai/), 创建你的应用之后, 获取到你的 api key 之后, 填写到 .env 文件中即可, 也支持私有化部署dify版本\n\n  ```sh\n  # 执行下面命令，拷贝一份 .env.example 文件为 .env\n  cp .env.example .env\n  # 填写完善 .env 文件中的内容\n  DIFY_API_KEY='你的key'\n  # 如果需要私有化部署，请修改.env中下面的配置\n  # DIFY_URL='https://[你的私有化部署地址]'\n  ```\n\n- ollama\n\n  Ollama 是一个本地化的 AI 服务，它的 API 与 OpenAI 非常接近。配置 Ollama 的过程与各种在线服务略有不同\n\n  ```sh\n  # 执行下面命令，拷贝一份 .env.example 文件为 .env\n  cp .env.example .env\n  # 填写完善 .env 文件中的内容\n  OLLAMA_URL='http://127.0.0.1:11434/api/chat'\n  OLLAMA_MODEL='qwen2.5:7b'\n  OLLAMA_SYSTEM_MESSAGE='You are a personal assistant.'\n  ```\n\n- 302.AI\n\n  AI聚合平台，有套壳GPT的API，也有其他模型，点这里可以[添加API](https://dash.302.ai/apis/list)，添加之后把API KEY配置到.env里，如下，MODEL可以自行选择配置\n\n  ```\n  _302AI_API_KEY = 'xxxx'\n  _302AI_MODEL= 'gpt-4o-mini'\n  ```\n\n  由于openai充值需要国外信用卡，流程比较繁琐，大多需要搞国外虚拟卡，手续费也都不少，该平台可以直接支付宝，算是比较省事的，注册填问卷可领1刀额度，后续充值也有手续费，用户可自行酌情选择。\n\n- claude\n\n  前往 [官网](https://console.anthropic.com) 注册并获取API KEY后进行配置即可\n\n  ```bash\n  # 执行下面命令，拷贝一份 .env.example 文件为 .env，如果已存在则忽略此步\n  cp .env.example .env\n\n  # 编辑.env文件并添加claude相关配置\n\n  CLAUDE_API_VERSION = '2023-06-01'\n  CLAUDE_API_KEY = '你的API KEY'\n  CLAUDE_MODEL = 'claude-3-5-sonnet-latest'\n  # 系统人设\n  CLAUDE_SYSTEM = ''\n  ```\n\n- 其他  \n  （待实践）理论上使用 openAI 格式的 api，都可以使用，在 env 文件中修改对应的 api_key、model、proxy_url 即可。\n\n## API资源/平台收录\n\n- [gpt4free](https://github.com/xtekky/gpt4free)\n- [chatanywhere](https://github.com/chatanywhere/GPT_API_free)\n\n## 赞助商\n\n<div align=\"center\">\n  <table>\n    <!-- Header -->\n    <tr>\n      <td align=\"center\" width=\"50%\">\n        <p align=\"center\">\n          <a href=\"https://91api.dev/register?aff=9P6u\" target=\"_blank\">\n            <img src=\"./sponsors/91api.jpg\" alt=\"91Api\" width=\"300px\"/>\n          </a>\n        </p>\n      </td>\n      <td align=\"center\" width=\"50%\">\n        <p align=\"center\">\n          <a href=\"https://www.compshare.cn/model-api?ytag=GPU_YY-gh_wechatbot\" target=\"_blank\">\n            <img src=\"./sponsors/Ucloud.png\" alt=\"UCloud\" width=\"300px\"/>\n          </a>\n        </p>\n      </td>\n    </tr>\n    <!-- Description -->\n    <tr>\n      <td align=\"left\">\n        一站式集成 500+主流大模型中转聚合API平台，高效稳定，高并发，价格超低\n        <a href=\"https://91api.dev/register?aff=9P6u\" target=\"_blank\">产品链接</a>\n      </td>\n      <td align=\"left\">\n        万卡RTX40系GPU+海内外主流模型API服务，秒级响应，按量计费，新客免费用。\n        <a href=\"https://www.compshare.cn/model-api?ytag=GPU_YY-gh_wechatbot\" target=\"_blank\">产品链接</a>\n      </td>\n    </tr>\n  </table>\n</div>\n\n目前该项目流量较大，已经上过 27 次 [Github Trending 榜](https://github.com/trending)，如果您的公司或者产品需要推广，可以在下方二维码处联系我，我会在项目中加入您的广告，帮助您的产品获得更多的曝光。\n\n## 开发/使用\n\n检查好自己的开发环境，确保已经安装了 `nodejs` , 版本需要满足 Node.js >= v18.0 ，版本太低会导致运行报错,最好使用 LTS 版本。\n\n1. 安装依赖\n\n> 安装依赖时，大陆的朋友推荐切到 taobao 镜像源后再安装，命令：  \n> `npm config set registry https://registry.npmmirror.com`  \n> 想要灵活切换，推荐使用我的工具 👉🏻 [prm-cli](https://github.com/wangrongding/prm-cli) 快速切换。\n\n```sh\n# 安装依赖\nnpm i\n# 推荐用 yarn 吧，npm 安装有时会遇到 wechaty 内部依赖安装失败的问题\nyarn\n```\n\n2. 运行服务\n\n```sh\n# 启动服务\nnpm run dev # 或者 npm run start\n# 启动服务\nyarn dev # 或者 yarn start\n```\n\n然后就可以扫码登录了，然后根据你的需求，自己修改相关逻辑文件。\n\n![](https://assets.fedtop.com/picbed/202403261420468.png)\n\n![](https://assets.fedtop.com/picbed/202212071315670.png)\n\n为了兼容 docker 部署，避免不必要的选择交互，新增指定服务运行\n\n```sh\n# 运行指定服务 （ 目前支持 ChatGPT | Kimi | Xunfei ）\nnpm run start -- --serve Kimi\n# 交互选择服务，仍然保持原有的逻辑\nnpm run start\n```\n\n3. 测试\n\n安装完依赖后，运行 `npm run dev` 前，可以先测试下 openai 的接口是否可用，运行 `npm run test` 即可。\n\n遇到 timeout 问题需要自行用魔法解决。（一般就是代理未成功，或者你的魔法服务限制了 openai api 的服务）\n\n## 你要修改的\n\n很多人说运行后不会自动收发信息，不是的哈，为了防止给每一条收到的消息都自动回复（太恐怖了），所以加了限制条件。\n\n你要把下面提到的地方自定义修改下。\n\n- 群聊，记得把机器人名称改成你自己微信号的名称，然后添加对应群聊的名称到白名单中，这样就可以自动回复群聊消息了。\n- 私聊，记得把需要自动回复的好友名称添加到白名单中，这样就可以自动回复私聊消息了。\n- 更深入的可以通过修改 `src/wechaty/sendMessage.js` 文件来满足你自己的业务场景。（大多人反馈可能无法自动回复，也可以通过调试这个文件来排查具体原因）\n\n在.env 文件中修改你的配置即可，示例如下\n\n```sh\n# 白名单配置\n#定义机器人的名称，这里是为了防止群聊消息太多，所以只有艾特机器人才会回复，\n#这里不要把@去掉，在@后面加上你启动机器人账号的微信名称\nBOT_NAME=@可乐\n#联系人白名单\nALIAS_WHITELIST=微信名1,备注名2\n#群聊白名单\nROOM_WHITELIST=XX群1,群2\n#自动回复前缀匹配，文本消息匹配到指定前缀时，才会触发自动回复，不配或配空串情况下该配置不生效（适用于用大号，不期望每次被@或者私聊时都触发自动回复的人群）\n#匹配规则：群聊消息去掉${BOT_NAME}并trim后进行前缀匹配，私聊消息trim后直接进行前缀匹配\nAUTO_REPLY_PREFIX=''\n```\n\n可以看到，自动回复都是基于 `chatgpt` 的，记得要开代理，或者填写代理地址。\n\n![](https://github.com/user-attachments/assets/1c312cf4-73d8-44a1-8f36-5ea288ac0aa4)\n\n## 注意项\n\n近期微信审查很严格，大量用户反映弹出外挂警告，由于项目内默认使用的是免费版的 web 协议，所以目前来说很容易会被微信检测到，建议使用 pad 协议，或者自行购买企业版协议，避免被封号。\n\n修改可参考： https://github.com/wangrongding/wechat-bot/pull/263/files  \n自行购买 pad 协议渠道（wechaty 出的，购买仍需谨慎）：http://pad-local.com  \n由于底层依赖的 wechaty 本身不怎么维护了，听说是被腾讯告了，所以大家购买也要谨慎，群友分享目前 pad 协议可正常使用(但频繁登录登出也会收到警告)，最好别一次性买太久的。\n\n## 常见问题\n\n以下是我的微信和群二维码，添加的时候记得备注清楚来意。  \n希望可以一起交流探讨相关问题和解决方案。\n\n| <img src=\"https://github.com/user-attachments/assets/902b1a20-0ea0-4348-9ac1-b9eb6645223c\" width=\"180px\"> | <img src=\"https://raw.githubusercontent.com/wangrongding/image-house/master/WechatIMG173.jpg\" width=\"180px\"> |\n| --- | --- |\n\n### 运行报错等问题\n\n首先你需要做到以下几点：\n\n- 拉取最新代码，重新安装依赖（删除 lock 文件，删除 node_modules）\n- 安装依赖时最好不要设置 npm 镜像\n- 遇到 puppeteer 安装失败设置环境变量：\n\n  ```\n  # Mac\n  export PUPPETEER_SKIP_DOWNLOAD='true'\n\n  # Windows\n  SET PUPPETEER_SKIP_DOWNLOAD='true'\n  ```\n\n- 确保你们的终端走了代理 (开全局代理，或者手动设置终端走代理)\n\n  ```sh\n  # 设置代理\n  export https_proxy=http://127.0.0.1:你的代理服务端口号;export http_proxy=http://127.0.0.1:你的代理服务端口号;export all_proxy=socks5://127.0.0.1:你的代理服务端口号\n  # 然后再执行 npm run test\n  npm run test\n  ```\n\n  ![](https://raw.githubusercontent.com/wangrongding/image-house/master/202403231002859.png)\n\n- 确保你的 openai key 有余额\n- 配置好 .env 文件\n- 执行 npm run test 能成功拿到 openai 的回复(设置完代理后，仍然请求不通？ 可以参考： https://medium.com/@chanter2d/%E5%85%B3%E4%BA%8E%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8clash%E5%AE%9E%E7%8E%B0%E7%9C%9F%E6%AD%A3%E7%9A%84%E5%85%A8%E5%B1%80%E4%BB%A3%E7%90%86-385b2d745871)\n- 执行 npm run dev 愉快的玩耍吧~ 🎉\n\n也可以参考这条 [issue](https://github.com/wangrongding/wechat-bot/issues/54#issuecomment-1347880291)\n\n- 怎么玩？ 完成自定义修改后，群聊时，在白名单中的群，有人 @你 时会触发自动回复，私聊中，联系人白名单中的人发消息给你时会触发自动回复。\n- 运行报错？检查 node 版本是否符合，如果不符合，升级 node 版本即可，检查依赖是否安装完整，如果不完整，大陆推荐切换下 npm 镜像源，然后重新安装依赖即可。（可以用我的 [prm-cli](https://github.com/wangrongding/prm-cli) 工具快速切换）\n- 调整对话模式？可以修改[openai/index.js](./src/openai/index.js) ,具体可以根据官方文档给出的示例（非常多，自己对应调整参数即可） ：https://beta.openai.com/examples\n\n## 使用 Docker 部署\n\n```sh\n$ docker build . -t wechat-bot\n\n$ docker run -d --rm --name wechat-bot -v $(pwd)/.env:/app/.env wechat-bot\n```\n\n- 如果docker build过程中node反复下载超时，可先下载nodejs镜像到本地镜像库，并将DockerFile中的'node:19'修改为本地nodejs镜像版本\n\n## Star History Chart\n\n该项目于 2023/2/13 日成为 Github Trending 榜首。\n\n[![Star History Chart](https://api.star-history.com/svg?repos=wangrongding/wechat-bot&type=Date)](https://star-history.com/#wangrongding/wechat-bot&Date)\n\n## License\n\n[MIT](./LICENSE).\n","readmeFilename":"README.md","repository":{"type":"git","url":"git+https://github.com/wangrongding/wechat-bot.git"},"bugs":{"url":"https://github.com/wangrongding/wechat-bot/issues"}}