Wechaty は、チャットボットの構築プロセスを簡素化する会話型 RPA SDK です。これはチャットボット開発用のスイス アーミー ナイフのようなもので、WhatsApp、WeChat などのさまざまなメッセージング プラットフォームにユニバーサル インターフェイスを提供します。 Wechaty では、ボット コードを一度記述するだけで、サポートされているプラットフォームのいずれかで実行されます。これは、各プラットフォームの API の基礎となる複雑さを心配することなく、魅力的な会話エクスペリエンスの作成に集中できることを意味します。オープンソースで使いやすく、チャットボットのアイデアを実現するのに役立つ活気に満ちたコミュニティに支えられています。
Wechaty はチャットボット作成者向けの RPA (ロボティック プロセス オートメーション) SDK で、JavaScript、Python、Go、Java の 6 行でボットを作成でき、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
「Wechaty は素晴らしいソリューションです。これを認識するユーザーはさらに多くなると思います。」リンク
— @Gcaufy、Tencent エンジニア、WePY の著者「太好用、好用の想哭」
— @xinbenlv、Google エンジニア、HaoShiYou.org 創設者”好用到哭”——你们对得起这个评价! リンク
— @bigbrother666sh、《社长不见了》ストーリー本杀 NPC DM 作成者「最好微信开発信库」リンク
— @Jarvis、Baidu エンジニア「Wechaty让营人员更多的時間思考如何に活動活動策划、留存用户、商变现」リンク
— @lijiarui、Juzi.BOT 創設者兼 CEO。「js を知っているなら、Wechaty を試してみてください。使い方は簡単です。」
— @Urinx Uri Lee、WeixinBot(Python) の作者「Wechaty は良いプロジェクトです。ぜひ継続してほしいと思っています。そのため、私はオープン コレクティブの寄稿者になりました。」
- @単純
詳細については、Wiki:Voice Of Developer をご覧ください。
Wechaty は、数千人の開発者によって多くの ChatBot プロジェクトで使用されています。他の開発者と話すには、以下の QR コードをスキャンしてWechaty 開発者コミュニティに参加してください。
他の Wechaty 開発者もあなたと話したいと考えているので、今すぐスキャンしてください。
Wechaty は過去数年間ですでに多くの講演を開催し、多くのブログを取得しました。 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 以上が必要です
このボットは、ログイン後にスキャンによってすべてのメッセージをコンソールに記録できます。
Wechaty の公式サンプルは、examples/ding-dong-bot.ts で見つけることができ、サンプル ディレクトリからはさらに多くのサンプルを見つけることができます。
初心者向けに最も簡単な設定を備えた Wechaty スターター リポジトリを用意しています。 clone
& npm install
& npm start
を実行すると、すぐに使用できるようになります。
Wechaty を初めて使用し、初めて試してみたい場合は、このリポジトリから開始して、プロジェクトのスターター テンプレートとして使用することを強くお勧めします。
それ以外の場合は、NPM または Docker を使用して実行する前に、上記の「世界最短のチャットボット コード: 6 行の JavaScriptサンプル」をbot.js
という名前のファイルに保存してください。
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. TypeScript を実行する
# for TypeScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.ts
Wechaty Docker について詳しくは、Wiki:Docker をご覧ください。
Wechaty はさまざまなプロトコル上で実行できるため、非常に強力です。環境変数WECHATY_PUPPET
別の Puppet プロバイダーに設定することで、プロトコルを指定できます。
Web プロトコルを使用できない場合は、次の手順に従って他のプロトコルを適用できます: https://github.com/wechaty/wechaty/wiki/Support-Developers 開発者が価値のある WeChat チャットボットを構築するのをサポートするために、無料のトークンを提供します。
現在、次のパペット プロバイダーをサポートしています。
プロトコル | パペットプロバイダー | 環境変数 |
---|---|---|
ウェブ | 人形人形遣い | export WECHATY_PUPPET=wechaty-puppet-puppeteer |
窓 | パペットワークプロ | export WECHATY_PUPPET=wechaty-puppet-service |
モック | パペットモック | export WECHATY_PUPPET=wechaty-puppet-mock |
ウェブ | パペットWechat4u | export WECHATY_PUPPET=wechaty-puppet-wechat4u |
iPad | パペットロック | export WECHATY_PUPPET=wechaty-puppet-service |
iPad | パペットパッドローカル | 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 |
Wechaty Puppet について詳しくは、Puppet Wiki をご覧ください。
Wechaty 公式 API リファレンスで完全なドキュメントを読む
Wechaty
メインボットクラス。
Bot
特定の Wechaty パペットを制御する Wechaty インスタンスです。
new Wechaty(options?: WechatyOptions)
options.name?: string
このボットの名前 (オプション)options.puppet?: string
使用する Puppet プロバイダーを選択します。次のいずれかである必要があります。options.puppetOptions?: PuppetOptions
オプション。ウィーチャティ | API | 説明 |
---|---|---|
イベント | login | ボットのログインが完全に成功した後に発行します |
イベント | logout | ボットがログアウトした後に送信します |
イベント | friendship | 誰かがボットに友達リクエストを送信したときに発行します |
イベント | message | 新しいメッセージがあるときに発行します |
イベント | room-join | 誰かが部屋に参加したときに発します |
イベント | room-topic | 誰かが部屋の話題を変えたときに発する |
イベント | room-leave | 誰かが部屋から出たときに発する |
イベント | room-invite | ルームへの招待があるときに発行します |
イベント | scan | ボットがスキャン用の QR コードを表示する必要があるときに発行します |
方法 | start(): Promise<void> | ボットを起動します |
方法 | stop(): Promise<void> | ボットを停止します |
方法 | logonoff(): boolean | ボットのログインステータス |
方法 | logout(): Promise<void> | ボットをログアウトする |
方法 | currentUser(): ContactSelf | ログインしたボットの連絡先を取得する |
方法 | say(text: string): Promise<void> | ボット自身にtext 読み上げさせます |
Contact
すべての wechat 連絡先 (友人/非友人) は連絡先としてカプセル化されます。
接触 | API | 説明 |
---|---|---|
静的 | 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
から拡張されています。
連絡先自分 | API | 説明 |
---|---|---|
方法 | avatar(file: FileBox): Promise<void> | ボットのアバターを設定する |
方法 | qrcode(): Promise<string> | ボットのQRコードを取得する |
方法 | signature(text: string): Promise<void> | ボットの署名を設定する |
Friendship
フレンドリクエストやフレンド確認イベントの送受信を行います。
友情 | API | 説明 |
---|---|---|
静的 | add(contact: Contact, hello?: string): Promise<void> | 友達に招待状を送って連絡を取る |
方法 | accept(): Promise<void> | 友達リクエストを受け入れる |
方法 | hello(): string | 友情の招待状から hello 文字列を取得する |
方法 | contact(): Contact | 友達から連絡をもらう |
方法 | type(): FriendshipType | 友情タイプを返します(不明、確認、受信、検証) |
Message
すべての wechat メッセージはメッセージとしてカプセル化されます。
メッセージ | API | 説明 |
---|---|---|
静的 | 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[] | contactList に言及したメッセージを取得します。 |
方法 | mentionSelf(): boolean | メッセージに自分自身が記載されているかどうかを確認する |
方法 | forward(to: Contact): Promise<void> | 受信したメッセージを転送する |
方法 | age(): number | 作成されてからの秒数 |
方法 | date(): Date | 作成された時間 |
方法 | toFileBox(): Promise<FileBox> | メッセージからメディア ファイルを抽出し、FileBox に置きます。 |
方法 | toContact(): Promise<Contact> | メッセージのシェアカードを入手 |
Room
すべての wechat ルーム (グループ) はルームとしてカプセル化されます。
部屋 | API | 説明 |
---|---|---|
静的 | create(contactList: Contact[], topic?: string): Promise<Room> | 新しい部屋を作成する |
静的 | find(query: string): Promise<null | Room> | フィルターでお部屋を探してみてください。多数取得した場合は、最初の 1 つを返します。 |
静的 | 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> | テキスト、メディア ファイル、連絡先カード、またはメンション付きのテキストをルーム内で @mention 連絡先に送信し、ボットが送信したメッセージを返します ( puppet-padplus のみサポート)。 |
方法 | add(contact: Contact): Promise<void> | ルームに連絡先を追加する |
方法 | del(contact: Contact): Promise<void> | ルームから連絡先を削除する |
方法 | quit(): Promise<void> | ボットは部屋自体を終了しました |
方法 | topic(): Promise<string> | ルームからトピックをGET |
方法 | topic(newTopic: string): Promise<void> | ルームからトピックを設定する |
方法 | announce(text: string): Promise<void> | 部屋からSET/GETアナウンス |
方法 | qrcode(): Promise<string> | ルームからルームのQRコードを取得し、スキャンしてルームに参加することができます。 |
方法 | 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
ルームへの招待を受け入れる
部屋への招待 | API | 説明 |
---|---|---|
方法 | 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 をご覧ください。
Wechaty プラグインの作成と公開は簡単です。モジュールを 1 つのパラメーターを取る関数として公開するだけです: wechaty。プラグインが Wechaty によってインポートされると、プラグイン自体が引数として渡されるため、Wechaty がサポートする構成を自由に追加できます。
import { WechatyPlugin } from 'wechaty'
export default const MyPlugin : WechatyPlugin = ( wechaty : Wechaty ) => {
// ...
}
このconfig
存在するため、ユーザーはカスタマイズをプラグインに渡すことができます。 Wechaty プラグインを文書化する際には、ユーザー向けにサポートされる構成をレイアウトします。
見る:
[ ![ Powered by Wechaty ] ( https://img.shields.io/badge/Powered%20By-Wechaty-brightgreen.svg )] ( https://wechaty.js.org )
Wiki:Badge からさらに埋め込み HTML/マークダウン コードを取得します
プル リクエストを追加してください。
Wechaty を使用したプロジェクトの詳細については、Wiki:Wechaty を使用したプロジェクトをご覧ください。
Wechaty Docker/NPM を実行するためのベスト プラクティスは、中国国外で VPS (仮想プライベート サーバー) を使用することです。これにより、 npm install
とdocker pull
問題なくスムーズに実行されるため、時間を節約できます。
次の VPS プロバイダーは Wechaty チームによって使用されており、本番環境では完全に機能しました。次のリンクを使用すると、数分で入手できます。また、これを行うと、Wechaty からの紹介を受けるため、Wechaty をサポートすることができます。
位置 | 価格 | ラム | 支払い | プロバイダー |
---|---|---|---|---|
シンガポール | 5ドル | 512MB | ペイパル | デジタルオーシャン |
日本 | 5ドル | 1GB | ペイパル | リノード |
韓国 | 10ドル | 1GB | アリペイ、ペイパル | ネットデディ |
シンガポール | 3.5ドル | 512MB | アリペイ、ウィーチャット | バルトル |
2017年には...
フアンさんの日常生活/仕事は、wechat でのチャットに依存しすぎています。
それを想像できますか?彼は死にかけていた...
したがって、私のために wechat 上で 24 時間年中無休で動作し、最も重要なメッセージを監視/フィルタリングしてくれる、疲れを知らないボットが非常に必要です。たとえば、フォローアップしたいキーワードを含むディスカッションを強調表示します (特に騒がしい部屋で)。 ;-)
最後に、これは huan の個人的な学習目的である自動テストのために構築されました。
このプロジェクトは、貢献してくださったすべての人々のおかげで存在します。 [貢献する]。
支援者の皆様、ありがとうございました! 【後援者になる】
スポンサーになってこのプロジェクトを支援してください。あなたのロゴが Web サイトへのリンクとともにここに表示されます。 【スポンサーになる】
CQRS パターンを適用するための Wechaty エコシステムの冗長化に取り組んでいます。
Wechaty の 2 番目のベータ リリース。バージョン 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} } ,
}