Wechaty 是一款会话式 RPA SDK,可简化构建聊天机器人的过程。它就像聊天机器人开发的瑞士军刀,为 WhatsApp、微信等各种消息平台提供通用接口。使用 Wechaty,您只需编写一次机器人代码,它就可以在任何支持的平台上运行。这意味着您可以专注于创建引人入胜的对话体验,而不必担心每个平台 API 的潜在复杂性。它是开源的,易于使用,并由充满活力的社区提供支持,随时可以帮助您将聊天机器人的想法变为现实。
Wechaty 是一款面向聊天机器人制作者的 RPA(机器人流程自动化)SDK,可以帮助您用 6 行 JavaScript、Python、Go 和 Java 创建机器人,并支持 Linux、Windows、MacOS 和 Docker 等跨平台。
️ https://wechaty.js.org
https://github.com/Wechaty/wechaty
? https://github.com/Wechaty/wechaty/issues
https://github.com/Wechaty/wechaty-getting-started
? https://hub.docker.com/r/wechaty/wechaty
“微信是一个很好的解决方案,我相信会有更多的用户认可它。”关联
— @Gcaufy,腾讯工程师,WePY 作者“太好用,好用的想哭”
— @xinbenlv,Google 工程师,HaoShiYou.org 创始人“好用哭”——你们对得起这个评价!链接
— @bigbrother666sh,《社长不见了》剧本杀 NPC DM 的创造者“最好的微信开发库”链接
— @Jarvis,百度工程师“微信让运营人员更多的时间思考如何进行活动策划、留存用户,商业变现”链接
— @lijiarui,橘子.BOT 创始人兼首席执行官。“如果你懂js……试试Wechaty。它很容易使用。”
— @Urinx Uri Lee,WeixinBot(Python) 作者“Wechaty是一个很好的项目,我希望它能够持续下去!因此,我成为了开放集体的贡献者。”
- @简单的
在 Wiki 上查看更多内容:开发者之声
Wechaty 在许多 ChatBot 项目中被数千名开发人员使用。如需与其他开发者交流,请扫描下面的二维码并加入我们的微信开发者社区。
立即扫描,因为其他微信开发者也想与您交谈!
在过去的几年里,Wechaty 已经举办了很多讲座并获得了很多博客;以下是所有微信资源:
import { WechatyBuilder } from 'wechaty'
const wechaty = WechatyBuilder . build ( ) // get a Wechaty instance
wechaty
. on ( 'scan' , ( qrcode , status ) => console . log ( `Scan QR Code to login: ${ status } nhttps://wechaty.js.org/qrcode/ ${ encodeURIComponent ( qrcode ) } ` ) )
. on ( 'login' , user => console . log ( `User ${ user } logged in` ) )
. on ( 'message' , message => console . log ( `Message: ${ message } ` ) )
wechaty . start ( )
注意:Wechaty 需要 Node.js 版本 >= 16
该机器人可以在登录后通过扫描将所有消息记录到控制台。
您可以在 example/ding-dong-bot.ts 找到 Wechaty 的官方示例,并从我们的示例目录中找到更多内容。
我们为初学者提供了一个具有最简单设置的 Wechaty 入门存储库。在您clone
& npm install
& npm start
后,它将开箱即用。
如果您是 Wechaty 新手并想第一次尝试它,我们强烈建议您从该存储库开始,并将其用作项目的入门模板。
否则,请将上面的世界上最短的 ChatBot 代码:6 行 JavaScript示例保存到名为bot.js
文件中,然后才能使用 NPM 或 Docker 运行它。
npm init
npm install wechaty
# create your first bot.js file, you can copy/paste from the above "The World's Shortest ChatBot Code: 6 lines of JavaScript"
# then:
node bot.js
Wechaty Docker 同时支持 JavaScript 和 TypeScript。要使用 TypeScript,只需用 TypeScript 编写并以扩展名
.ts
保存,无需编译,因为我们使用ts-node
来运行它。
2.1.运行 JavaScript
# for JavaScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.js
2.2.运行打字稿
# for TypeScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.ts
在 Wiki:Docker 中了解有关 Wechaty Docker 的更多信息。
Wechaty 非常强大,它可以运行在不同的协议上。您可以通过将环境变量WECHATY_PUPPET
设置为不同的 puppet 提供程序来指定协议。
如果您无法使用Web协议,您可以按照此处的说明应用其他协议:https://github.com/wechaty/wechaty/wiki/Support-Developers 我们提供免费令牌来支持开发人员构建有价值的微信聊天机器人。
目前我们支持以下木偶提供商:
协议 | 傀儡提供者 | 环境变量 |
---|---|---|
网络 | 傀儡师 | export WECHATY_PUPPET=wechaty-puppet-puppeteer |
视窗 | PuppetWorkPro | export WECHATY_PUPPET=wechaty-puppet-service |
嘲笑 | 木偶模拟 | export WECHATY_PUPPET=wechaty-puppet-mock |
网络 | Puppet微信4u | export WECHATY_PUPPET=wechaty-puppet-wechat4u |
iPad | 木偶摇滚 | export WECHATY_PUPPET=wechaty-puppet-service |
iPad | PuppetPad本地 | export WECHATY_PUPPET=wechaty-puppet-service |
视窗 | 木偶甜甜圈 | export WECHATY_PUPPET=wechaty-puppet-service |
iPad | export WECHATY_PUPPET=wechaty-puppet-padpro | |
iPad | export WECHATY_PUPPET=wechaty-puppet-padchat | |
iPad | export WECHATY_PUPPET=wechaty-puppet-padplus | |
苹果 | export WECHATY_PUPPET=wechaty-puppet-macpro | |
视窗 | export WECHATY_PUPPET=wechaty-puppet-service |
从 Puppet Wiki 了解有关 Wechaty Puppet 的更多信息:
完整文档请阅读Wechaty官方API参考
Wechaty
主要机器人类。
Bot
是控制特定微信傀儡的微信实例。
new Wechaty(options?: WechatyOptions)
options.name?: string
该机器人的名称(可选)options.puppet?: string
选择我们要使用的木偶提供程序。必须是以下之一:options.puppetOptions?: PuppetOptions
选项。微信 | 应用程序编程接口 | 描述 |
---|---|---|
事件 | login | 机器人登录完全成功后发出 |
事件 | logout | 机器人注销后发出 |
事件 | friendship | 当有人向机器人发送好友请求时发出 |
事件 | message | 当有新消息时发出 |
事件 | room-join | 当有人加入任何房间时发出 |
事件 | room-topic | 当有人改变房间主题时发出 |
事件 | room-leave | 当有人离开房间时发出 |
事件 | room-invite | 有房间邀请时发出 |
事件 | scan | 当机器人需要向您显示用于扫描的二维码时发出 |
方法 | start(): Promise<void> | 启动机器人 |
方法 | stop(): Promise<void> | 停止机器人 |
方法 | logonoff(): boolean | 机器人登录状态 |
方法 | logout(): Promise<void> | 注销机器人 |
方法 | currentUser(): ContactSelf | 获取登录机器人联系人 |
方法 | say(text: string): Promise<void> | 让机器人对自己说出text |
Contact
所有微信联系人(好友/非好友)都会被封装为一个Contact。
接触 | 应用程序编程接口 | 描述 |
---|---|---|
静止的 | find(query: string): Promise<null | Contact> | 按姓名或别名查找联系人,如果结果多个,则返回第一个。 |
静止的 | findAll(query: string): Promise<Contact[]> | 按name 或alias 查找联系人 |
静止的 | load(query: string): Contact | 通过id获取联系方式 |
财产 | id: readonly string | 获取联系人 ID |
方法 | sync(): Promise<void> | 强制重新加载联系人数据,再次从低级 API 同步数据 |
方法 | say(text: string): Promise<void | Message> | 发送文本、联系人或文件给联系人,返回机器人发送的消息(仅支持puppet-padplus )。 |
方法 | self(): boolean | 检查联系人是否是自己 |
方法 | name(): string | 从联系人处获取姓名 |
方法 | alias(): Promise<string> | 获取联系人的别名 |
方法 | alias(newAlias: string): Promise<void> | 设置或删除联系人的别名 |
方法 | friend(): boolean | 检查联系人是否为好友 |
方法 | type(): ContactType | 返回联系人的类型 |
方法 | province(): string | 从联系人处获取区域“省” |
方法 | city(): string | 从联系人处获取区域“城市” |
方法 | avatar(): Promise<FileBox> | 获取头像图片文件流 |
方法 | gender(): ContactGender | 从联系人中获取性别 |
ContactSelf
ContactSelf
类是从Contact
扩展而来的。
联系自我 | 应用程序编程接口 | 描述 |
---|---|---|
方法 | avatar(file: FileBox): Promise<void> | 设置机器人头像 |
方法 | qrcode(): Promise<string> | 获取机器人的二维码 |
方法 | signature(text: string): Promise<void> | 为机器人设置签名 |
Friendship
发送、接收好友请求和好友确认事件。
友谊 | 应用程序编程接口 | 描述 |
---|---|---|
静止的 | add(contact: Contact, hello?: string): Promise<void> | 发送好友邀请进行联系 |
方法 | accept(): Promise<void> | 接受好友请求 |
方法 | hello(): string | 从友谊邀请中获取 hello 字符串 |
方法 | contact(): Contact | 从友谊中获得联系 |
方法 | type(): FriendshipType | 返回好友类型(未知、确认、接收、验证) |
Message
所有的微信消息都会被封装成一个Message。
信息 | 应用程序编程接口 | 描述 |
---|---|---|
静止的 | find(query: string): Promise<null | Message> | 在缓存中查找消息并返回第一条消息 |
静止的 | findAll(query: string): Promise<Message[]> | 在缓存中查找消息,返回消息列表 |
方法 | from(): Contact | 从消息中获取发件人 |
方法 | to(): Contact | 获取消息的目的地 |
方法 | room(): null | Room | 从消息中获取房间。(如果消息不在房间中,则返回null ) |
方法 | text(): string | 获取消息的文本内容 |
方法 | say(text: string): Promise<void | Message> | 回复文本、媒体文件或联系消息给发件人,返回机器人发送的消息(仅支持puppet-padplus )。 |
方法 | type(): MessageType | 从消息中获取类型 |
方法 | self(): boolean | 检查消息是否是自己发送的 |
方法 | mention(): Contact[] | 获取联系人列表中提到的消息。 |
方法 | mentionSelf(): boolean | 检查消息是否提及自己 |
方法 | forward(to: Contact): Promise<void> | 转发收到的消息 |
方法 | age(): number | 自创建以来的秒数 |
方法 | date(): Date | 它被创建的时间 |
方法 | toFileBox(): Promise<FileBox> | 从消息中提取媒体文件,并将其放入 FileBox 中。 |
方法 | toContact(): Promise<Contact> | 获取留言分享卡 |
Room
所有的微信聊天室(群)都会被封装为一个Room。
房间 | 应用程序编程接口 | 描述 |
---|---|---|
静止的 | create(contactList: Contact[], topic?: string): Promise<Room> | 创建一个新房间 |
静止的 | find(query: string): Promise<null | Room> | 尝试通过过滤器找到房间。如果有很多,则返回第一个。 |
静止的 | findAll(query: string): Promise<Room[]> | 查找房间中的所有联系人 |
静止的 | load(query: string): Room | 按房间 ID 加载房间 |
财产 | id: readonly string | |
事件 | join | 当有人加入任何房间时发出 |
事件 | topic | 当有人改变房间主题时发出 |
事件 | leave | 当有人离开房间时发出 |
事件 | invite | 收到房间邀请时发出 |
方法 | sync(): <Promise<void> | 强制重新加载房间数据,再次从低级 API 同步数据。 |
方法 | say(text: string): Promise<void | Message> | 在 Room 内发送文本、媒体文件、联系人卡片或提及 @mention 联系人的文本,返回机器人发送的消息(仅支持puppet-padplus )。 |
方法 | add(contact: Contact): Promise<void> | 添加房间中的联系人 |
方法 | del(contact: Contact): Promise<void> | 从房间中删除联系人 |
方法 | quit(): Promise<void> | 机器人自行退出房间 |
方法 | topic(): Promise<string> | 从房间获取主题 |
方法 | topic(newTopic: string): Promise<void> | 从房间设置主题 |
方法 | announce(text: string): Promise<void> | SET/GET 从房间宣布 |
方法 | qrcode(): Promise<string> | 从房间获取房间二维码,可用于扫描加入房间。 |
方法 | alias(contact: Contact): Promise<string> | 返回联系人的房间房间别名 |
方法 | roomAlias(contact: Contact): Promise<string | null> | 与函数别名相同 |
方法 | has(contact: Contact): Promise<boolean> | 检查房间是否有会员contact |
方法 | memberAll(query?: string): Promise<Contact[]> | 查找房间中的所有联系人或具有特定名称的联系人 |
方法 | member(query: string): Promise<null | Contact> | 查找房间中的所有联系人,如果有很多,则返回第一个。 |
方法 | memberList():Promise<Contact[]> | 获取房间中的所有房间成员 |
方法 | owner(): null | Contact | 从房间中找到房间的主人。 |
RoomInvitation
接受房间邀请
房间邀请函 | 应用程序编程接口 | 描述 |
---|---|---|
方法 | accept(): Promise<void> | 接受房间邀请 |
方法 | inviter(): Contact | 从房间邀请中获取邀请者 |
方法 | roomTopic(): Promise<string> | 从房间邀请中获取房间主题 |
方法 | date(): Promise<Date> | 它被创建的时间 |
方法 | age(): Promise<number> | 自创建以来的秒数 |
Wechaty 通过单元和集成测试进行全自动测试,并提供由 Travis、Shippable 和 Appveyor 等 CI 提供支持的持续集成和持续交付 (CI/CD) 支持。
要测试 Wechaty,请运行:
npm test
从 Wiki:Tests 了解有关测试的更多信息
创建和发布微信插件很简单。只需将您的模块公开为带有 1 个参数的函数:wechaty。当您的插件被 Wechaty 导入时,它会将自身作为参数传入,因此您可以自由添加 Wechaty 支持的任何配置。
import { WechatyPlugin } from 'wechaty'
export default const MyPlugin : WechatyPlugin = ( wechaty : Wechaty ) => {
// ...
}
config
存在,以便用户可以将自定义传递给您的插件。在记录您的微信插件时,您将为用户列出支持的配置。
看:
[ ![ Powered by Wechaty ] ( https://img.shields.io/badge/Powered%20By-Wechaty-brightgreen.svg )] ( https://wechaty.js.org )
从 Wiki:Badge 获取更多嵌入 html/markdown 代码
欢迎添加您的请求请求!
在 Wiki 中了解有关使用 Wechaty 的项目的更多信息:使用 Wechaty 的项目
运行Wechaty Docker/NPM的最佳实践是使用中国境外的VPS(虚拟专用服务器),这可以节省您数小时的时间,因为npm install
和docker pull
将顺利运行,没有任何问题。
Wechaty团队使用了以下VPS提供商,并且它们在生产中运行良好。您可以使用以下链接在几分钟内获得一个。此外,这样做可以支持微信,因为您是我们推荐的。
地点 | 价格 | 内存 | 支付 | 提供者 |
---|---|---|---|---|
新加坡 | 5 美元 | 512MB | 贝宝 | 数字海洋 |
日本 | 5 美元 | 1GB | 贝宝 | 易诺德 |
韩国 | 10 美元 | 1GB | 支付宝、贝宝 | 内特德迪 |
新加坡 | 3.5 美元 | 512MB | 支付宝、微信 | 乌尔特尔 |
2017年...
欢的日常生活/工作依赖于太多的微信聊天。
你能想象吗?他快死了……
因此,迫切需要一个在微信上 24x7 不知疲倦地为我工作的机器人,监控/过滤最重要的消息。例如,它突出显示包含他想要跟进的关键词的讨论(尤其是在吵闹的房间里)。 ;-)
最后,它是为了huan个人的自动测试学习目的而构建的。
这个项目的存在要感谢所有做出贡献的人。 [贡献]。
感谢我们所有的支持者! [成为支持者]
成为赞助商来支持该项目。您的徽标将显示在此处,并带有指向您网站的链接。 [成为赞助商]
致力于重新构建微信生态系统以应用 CQRS 模式。
Wechaty 的第二个 beta 版本,包含 v1.10 版本的所有生态系统 npm 模块(wechaty-puppet、wechaty-puppet-service 等)
在出版物中引用该项目:
@misc { Wechaty ,
author = { Huan Li, Rui Li } ,
title = { Wechaty: Conversational SDK for Chatbot Makers } ,
year = { 2016 } ,
publisher = { GitHub } ,
journal = { GitHub Repository } ,
howpublished = { url{https://github.com/wechaty/wechaty} } ,
}