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 提供者來指定協定。
如果您無法使用網頁協議,您可以按照此處的說明應用其他協議: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} } ,
}