Hydra bot
v1.0.33
このプロジェクトは、企業などのために API を迅速かつ効果的に実装する方法として whatsapp を使用するコミュニティを支援するために開発されました。この家族の一員になってくれてありがとう。
このプロジェクトは 2 つの方法で使用できます。1 つ目は、明確に定義された一連の操作 (POST、GET、PUT、および DELETE メソッド) を使用して Web サービスを使用する方法です。2 つ目のオプションは、Web サービスを使用せずに生の形式でボットを使用する方法です。サービス。
何か疑問はありますか?助けが必要ですか? Whatsapp グループに参加して、他の人に質問してみましょう!
安定バージョンを使用してください。
> npm i --save hydra-bot
または Nightly リリースの場合:
> npm i --save https://github.com/jonalan7/Hydra-bot/releases/download/nightly/hydra-nightly.tgz
ターミナル管理者:
> 糸管理者
糸 Ubuntu をインストールします。
>カール -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -> echo "deb https://dl.yarnpkg.com/debian/安定したメイン" | sudo tee /etc/apt/sources.list.d/yarn.list> sudo apt update && sudo apt install 糸> 糸
サービスはローカルホストのポート 8080 で開始されます。
const hydraBot = require('hydra-bot');(async () => { // Webサービスを開始する const WS = hydraBot.initWs();})(); を待ちます。
ボットのみを使用してフリー モードで作業したい場合は、必要な情報を乾燥させてください。
const hydraBot = require('hydra-bot');const mime = require('mime-types');const fs = require('fs');(async () => { クライアントに任せます。 // ボットサービスを開始します const ev = hydraBot.initServer(); を待ちます。 // 現在の WhatsApp インターフェースに戻ります ev.on('interfaceChange', (変更) => {console.log('interfaceChange: ', 変更); }); // qrcodeパラメータを返す ev.on('qrcode', (qrcode) => {console.log('qrcode: ', qrcode); }); // 接続情報を返す ev.on('connection', async (conn) => {// ブラウザ情報!if (conn.statusFind === 'browser') { console.log('info Browser: ', conn.text);}/ / whatsapp chatif (conn.connect) { client = conn.client // hydra-bot からのクラスクライアント const getMe = await client.getHost(); = getMe.id._serialized; // 番号 host console.log('ホスト番号: ', hostNumber); // テキスト メッセージを送信します client.sendMessage({ to: hostNumber, // 連絡先番号またはグループを渡すことができます)数値本文: "こんにちは、ハイドラ ボットです", // メッセージ テキスト オプション: {type: 'sendText', // 配送タイプ },}).then((result) => { console.log(result); // メッセージ結果}).catch((error) => { console.log(error); // メッセージエラー});} }); // 新しいメッセージを受信して返します ev.on('newMessage', async (newMsg) => {// 受信時if (!newMsg.result.fromMe) { // メッセージを受信しました! console.log('NewMessageReceived: ', newMsg.result); // dowload files if (newMsg.result.isMedia) {constbuffer = await client.decryptFile(newMsg.result);// この時点で、次のことができます。バッファでやりたいことを何でもしてください// おそらくファイルに書き込むことになるでしょうconst fileName = `some-file-name.${mime.extension( newMsg.result.mimetype )}`;fs.writeFile(fileName,buffer , (err) => { if (err) {console.log(err) }}); }}// いつ送信されるか if (!!newMsg.result.fromMe) { // メッセージが送信されました console.log('NewMessageSent: ', newMsg.result);} }); // 各メッセージのステータスを返します ev.on('newOnAck', async (event) => {console.log('id Message: ',event.result.id._serialized); // message idconsole.log('Status Message: ',event.result .ack); // -7 = MD_DOWNGRADE、-6 = 非アクティブ、-5 = CONTENT_UNUPLOADABLE、-4 = CONTENT_TOO_BIG、-3 = CONTENT_GONE、-2 = 期限切れ、-1 = 失敗、0 = クロック、1 = 送信、2 = 受信、3 = 読み取り、4 = 再生console.log('メッセージより: '、event.result.from ); // messageconsole.log('To Message: ',event.result.to); });})();
Puppeteer がファイルのダウンロードを処理します。復号化は可能な限り高速に実行されます (ネイティブ メソッドを超えます)。大容量ファイルにも対応!
const hydraBot = require('hydra-bot');const fs = require('fs');const mime = require('mime-types');(async () => { クライアントに任せます。 // ボットサービスを開始します const ev = hydraBot.initServer(); を待ちます。 // 接続情報を返す ev.on('connection', async (conn) => {// whatsapp chatif (conn.connect) { client = conn.client;} に接続されました }); ev.on('newMessage', async (newMsg) => {// 受信時if (!newMsg.result.fromMe) { // メッセージを受信しました! console.log('NewMessageReceived: ', newMsg.result); // dowload files if (newMsg.result.isMedia) {constbuffer = await client.decryptFile(newMsg.result);// この時点で、次のことができます。バッファでやりたいことを何でもしてください// おそらくファイルに書き込むことになるでしょうconst fileName = `some-file-name.${mime.extension( newMsg.result.mimetype )}`;fs.writeFile(fileName,buffer , (err) => { if (err) {console.log(err) }}); });})();
const ヒドラボット = require('ヒドラボット');ヒドラボット.initServer({ session: 'session', // 生成されるトークンの名前。すべての顧客情報を含むフォルダーが作成されます pathNameToken: 'token', // クライアント トークンが保存されるフォルダーのパスと名前 printQRInterminal: true, // trueの場合、QRコードが端末に印刷されます updatedLog: true, // ログ情報はターミナルで自動的に更新されます timeAutoClose: 60000, // デフォルトで 60 秒間 QR コードを読み取らない場合、メモリを節約するためにクライアントのブラウザが自動的に閉じられます。無効にしたい場合は、0 または false を設定します。 mkdirFolderToken: '', // トークン フォルダー パス、プロジェクト内のみ puppeteerOptions: {headless: true, // ブラウザーを開いているかどうかに関係なく、プロジェクトを開始します!args: [], // ブラウザー インスタンスに渡す追加の引数。パラメータを追加すると、projectexecutablePath: 'useChrome', // プロジェクトに使用されるブラウザのデフォルトの引数を置き換えます。パスを指定できます。パラメータを渡さない場合は、インストールされているブラウザが開きます。 },});
const ヒドラボット = require('ヒドラボット');ヒドラボット.initWs({ ホストサーバー: 'http://localhost', ポート: '8080'、 url: '', // コールバックを受け取る URL を指定します。 authentication: true, // ルートで認証を要求します pathNameToken: 'token', // クライアント トークンが保存されるフォルダーのパスと名前 printQRInterminal: true, // trueの場合、QRコードが端末に印刷されます updatedLog: true, // ログ情報はターミナルで自動的に更新されます timeAutoClose: 60000, // デフォルトで 60 秒間 QR コードを読み取らない場合、メモリを節約するためにクライアントのブラウザが自動的に閉じられます。無効にしたい場合は、0 または false を設定します。 mkdirFolderToken: '', // トークン フォルダー パス、プロジェクト内のみ puppeteerOptions: {headless: true, // ブラウザーを開いているかどうかに関係なく、プロジェクトを開始します!args: [], // ブラウザー インスタンスに渡す追加の引数。パラメータを追加すると、projectexecutablePath: 'useChrome', // プロジェクトに使用されるブラウザのデフォルトの引数を置き換えます。パスを指定できます。パラメータを渡さない場合は、インストールされているブラウザが開きます。 },});
管理インターフェースを開始するには、以下を使用します。
> 糸管理者
ターミナルのコマンドのリスト:
指示 | 説明 |
---|---|
/create | ユーザーの作成 |
/delete | ユーザーの削除 |
/selectid | IDでユーザーを表示 |
/selectname | ユーザーを名前で選択 |
/getall | すべてのユーザーをリストする |
/deactivate | ユーザーを無効にする |
/activate | ユーザーをアクティブ化する |
/changename | ユーザー名の変更 |
/password | ユーザーのパスワードを変更する |
/cls | 画面/端末をクリアする |
/help | ターミナルでの管理用のすべてのコマンドをリストします。 |
/exit | 出口マネージャー |
REST API
使用するコマンド一覧Headers
のパターンがあり、ホイールにアクセスして管理者を作成できるようになります。{ "Content-Type": "application/json", "admin": "admin", "admin_pass": "admin"}
タイプ | ブラウザへのルート | 説明 | 体 |
---|---|---|---|
役職 | /create_user | ユーザーの作成 | {"name":"USE","password":"USER PASSWORD"} |
デル | /delete_user/ID_USE | ユーザーの削除 | EMPTY |
得る | /get_user_by_id/ID_USE | IDごとにユーザーを表示 | EMPTY |
得る | /get_all_users | すべてのユーザーをリストする | EMPTY |
置く | /deactivate_user | ユーザーを無効にする | {"id":"USER ID"} |
置く | /activate_user | ユーザーをアクティブ化する | {"id":"USER ID"} |
置く | /change_name | ユーザー名の変更 | {"id":"USER ID","name":"NEW USERNAME"} |
置く | /change_password | ユーザーのパスワードを変更する | {"id":"USER ID","password":"NEW SECURE PASSWORD"} |
注: パラメータは開発中に変更できます。
Headers
のパターンがあります (デフォルト、ユーザー名 = 'ユーザー'、パスワード = 'ユーザー')。ヘッダーは次のようにパラメータ化する必要があります。
{ "Content-Type": "application/json", "user": "user", "user_pass": "user"}
特定の URL でコールバックを受信したい場合は、接続ルートで url パラメーターを渡します。
タイプ | ブラウザへのルート | 説明 | 体 |
---|---|---|---|
役職 | /connect | Whatsappとの接続を開始する | { "url": "http://localhost:8080/webhooktest" } |
役職 | /sendtext | 番号にテキストを送信する | { "to": "contact number", "body": "message"} |
役職 | /sendFile | ファイルを番号に送信する | { "to": "contact number", "file_path": "https://docs.marklogic.com/guide/node-dev.pdf", "file_name": "node.js" } |
役職 | /sendAudio | 音声を送信する | { "to": "contact number", "url_mp3": "https://cdn.freesound.org/previews/620/620094_4935038-lq.mp3", "file_name": "node.js" } |
役職 | /sendImage | 画像メッセージを送信する | { "to": "contact number", "url_img": "https://i.pinimg.com/564x/a9/b1/18/a9b118761788b1ab260aae2835c468cd.jpg" } |
役職 | /disconnect | サーバーからの切断 | 空の |
役職 | /check_user | 入力したユーザーが存在するか確認する | 空の |
タイプ | ブラウザへのルート | 説明 | 体 |
---|---|---|---|
得る | /get_all_contacts | 連絡先の取得 | EMPTY |
得る | /check_connect | クライアントが接続されているかどうかを確認する | EMPTY |
得る | /last_qrcode | QRコードが有効かどうかを確認する | EMPTY |
得る | /screenshot | スクリーンショットを取得する | EMPTY |
これらの機能を使用するにはログインする必要があります。
to
<phone Number>@c.us
または<phone Number>-<groupId>@g.us
または<phone Number><groupId>@g.us
になります。メッセージを送信できる機能は 1 つだけです。
// テキストメッセージを送信してクライアントを待つ .sendMessage({to: '[email protected]', // 連絡先番号またはグループ番号を渡すことができますbody: 'Hydra-bot によって送信されたメッセージ', // message textoptions: { type: 'sendText', //配送タイプ}、 }) .then((result) => {console.log(result); // メッセージの結果 }) .catch((error) => {console.log(error); // メッセージエラー });// ファイルを送信待機クライアント .sendMessage({to: '[email protected]', // 連絡先番号またはグループ番号を渡すことができますbody: './file.pdf', // ディレクトリまたは urloptions を使用できます: { type: ' sendFile', // 配送タイプ filename: 'filename', // ここにファイル名を入力します}, }) .then((result) => {console.log(result); // メッセージの結果 }) .catch((error) => {console.log(error); // メッセージエラー });// ファイルを送信 audioawait クライアント .sendMessage({to: '[email protected]', // 連絡先番号またはグループ番号を渡すことができますbody: './file.mp3', // ディレクトリまたは urloptions を使用できます: { type: ' sendAudio', // 配送タイプ}, }) .then((result) => {console.log(result); // メッセージの結果 }) .catch((error) => {console.log(error); // メッセージエラー });// 音声ファイルを送信しますbase64await クライアント .sendMessage({to: '[email protected]', // 連絡先番号またはグループ番号を渡すことができますbody:base64MP3, // ディレクトリまたは urloptions を使用できます: { type: 'sendAudioBase64', // Shippingタイプ}、 }) .then((result) => {console.log(result); // メッセージの結果 }) .catch((error) => {console.log(error); // メッセージエラー });// 画像メッセージを送信してクライアントを待ちます .sendMessage({to: '[email protected]', // 連絡先番号またはグループ番号を渡すことができますbody: './file.jpg', // ディレクトリまたは urloptions を使用できます: { type: ' sendImage', // 配送タイプのキャプション: '画像テキスト', // 画像テキスト}, }) .then((result) => {console.log(result); // メッセージの結果 }) .catch((error) => {console.log(error); // メッセージエラー });// 画像を送信 Base64await クライアント .sendMessage({to: '[email protected]', // 連絡先番号またはグループ番号を渡すことができますbody:base64IMG, // ディレクトリまたは urloptions を使用できます: { type: 'sendImageFromBase64', // Shipping type caption: '画像テキスト', // 画像テキスト}, }) .then((result) => {console.log(result); // メッセージの結果 }) .catch((error) => {console.log(error); // メッセージエラー });
// 指定された chatawait クライアントにテキスト メッセージを送信します .sendText('[email protected]', 'ヒドラボットによって送信されたメッセージ') .then((result) => {console.log(result); // メッセージの結果 }) .catch((error) => {console.log(error); // メッセージエラー });// pathawait クライアントからファイルを送信します .sendFile('[email protected]', './file.pdf', { ファイル名: 'ファイル名' }) .then((result) => {console.log(result); // メッセージの結果 }) .catch((error) => {console.log(error); // メッセージエラー });// オーディオファイルを送信してクライアントを待つ .sendAudio('[email protected]', './file.mp3') .then((result) => {console.log(result); // メッセージの結果 }) .catch((error) => {console.log(error); // メッセージエラー });// オーディオを送信します。base64await クライアント .sendAudioBase64('[email protected]',base64MP3) .then((result) => {console.log(result); // メッセージの結果 }) .catch((error) => {console.log(error); // メッセージエラー });// 画像メッセージを送信してクライアントを待ちます .sendImage('[email protected]', './file.jpg', { caption: '画像テキスト' }) .then((result) => {console.log(result); // メッセージの結果 }) .catch((error) => {console.log(error); // メッセージエラー });// 画像を送信しますbase64await クライアント .sendImageFromBase64('[email protected]',base64IMG, { caption: '画像テキスト' }) .then((result) => {console.log(result); // メッセージの結果 }) .catch((error) => {console.log(error); // メッセージエラー });
// デバイス情報を取得するawait client.getHost();
// contactsconst contacts = aw のリストを返します