ノードでWhatsAppボットを作成する方法.js


目次

  • Introduction
  • Required Libraries
  • How to Run Program
  • Replying Messages
  • Create Authentication
  • Replying Messages With Image
  • Implementation with the Yu-Gi-oh API
  • Conclusion
  • 導入


    WhatsAppメッセンジャーは、私たちがリアルタイムでメッセージを送受信できるクロスプラットフォームメッセージングアプリです.WhatsAppメッセンジャーは、地球上でほぼすべての人が使用されます.残念ながら、電報とは異なり、WhatsAppのAPIの使用量はまだ制限されます.
    このポストでは、サードパーティのライブラリの助けを借りて無料WhatsAppボットを作る方法を紹介します.

    必要なライブラリ


    NPMからライブラリをインストールするには、まず最初にノードをインストールする必要があります.以降、NPMパッケージからライブラリをインストールします.
    WhatsApp Webのインストールjs
    $ npm install whatsapp-web.js
    
    or
    
    $ yarn add whatsapp-web.js
    
    QRコードターミナルのインストール
    $ npm install qr-code-terminal
    
    or
    
    $ yarn add qr-code-terminal
    

    プログラムの実行方法


    ファイルを作成するapp.js プロジェクトでこのコードをペーストします.
    const qrcode = require("qrcode-terminal");
    const { Client } = require("whatsapp-web.js");
    
    const client = new Client();
    
    client.initialize();
    
    client.on("qr", (qr) => {
      qrcode.generate(qr, { small: true });
    });
    
    client.on("ready", () => {
      console.log("Client is ready!");
    });
    
    次に、端末またはコマンドプロンプトで、このコマンドを入力します.
    $ node app
    
    or
    
    $ node app.js
    
    コマンドが実行されると、我々はボットを作成するために使用WhatsAppのアカウントでスキャンされるQRコードが表示されます.

    メッセージを返す


    ボットの作成の目標は、メッセージに対応できるようにすることです.そこで、作成したプロジェクトで次のコードを貼り付けます.
    //Replying Messages
    client.on("message", (message) => {
      if (message.body === "hello") {
        message.reply("Hiiiii");
      }
    });
    
    他の誰かがタイプAhello ボットへのメッセージ、我々はそれにボットの返信を行います.

    認証の作成


    認証を作成する機能は、我々がログインするたびにログインする必要がないことですapp.js .
    認証を作成するコードは次のとおりです.
    const qrcode = require("qrcode-terminal");
    const { Client, LocalAuth } = require("whatsapp-web.js");
    
    //store authentication data to a file
    const client = new Client({
      authStrategy: new LocalAuth(),
    });
    
    client.initialize();
    
    client.on("qr", (qr) => {
      qrcode.generate(qr, { small: true });
    });
    
    client.on("authenticated", () => {
      console.log("AUTHENTICATED");
    });
    
    client.on("ready", () => {
      console.log("Client is ready!");
    });
    
    client.on("message", (message) => {
      if (message.body === "hello") {
        message.reply("Hiiiii");
      }
    });
    

    URLからのイメージによるメッセージの応答


    一方、テキストメッセージで返信すればボットはあまり対話的ではないので、画像などのメディアを使ってメッセージに返信できます.
    ここでは、ボットとメディアを返信するコードです
    const qrcode = require("qrcode-terminal");
    const { Client, LocalAuth, MessageMedia } = require("whatsapp-web.js");
    
    const client = new Client({
      authStrategy: new LocalAuth(),
    });
    
    client.initialize();
    
    client.on("qr", (qr) => {
      qrcode.generate(qr, { small: true });
    });
    
    client.on("authenticated", () => {
      console.log("AUTHENTICATED");
    });
    
    client.on("ready", () => {
      console.log("Client is ready!");
    });
    
    //Replying Messages with image from url
    client.on("message", async (message) => {
      if (message.body === "meme") {
        //get media from url
        const media = await MessageMedia.fromUrl(
          "https://user-images.githubusercontent.com/41937681/162612030-11575069-33c2-4df2-ab1b-3fb3cb06f4cf.png"
        );
    
        //replying with media
        client.sendMessage(message.from, media, {
          caption: "meme",
        });
      }
    });
    
    私たちは誰か他のタイプをAmeme メッセージ.

    Yu GI Oh APIによる実装


    ライブラリは、ケーススタディのニーズに合わせて調整することができることを証明する.この場合は、YGOPRODeck Yu-Gi-Oh! API .
    次はどのようにYu giああです!我々が作るロボット
  • タイプされた誰かYugioh Card Name WhatsAppメッセージを介して.
  • カードの名前はデータベースに対してチェックされます.
  • yugiohカードがデータベースにあるならば、ボットはカードのイメージで応えます.
  • 図書館という図書館Axios WhatsAppボットはYu Gi - OHに要求を送信できるようにするために必要です!API
    $ npm install axios
    
    or
    
    $ yarn add axios
    
    ここでYu giの完全なコードです!ボット
    const { Client, LocalAuth, MessageMedia } = require("whatsapp-web.js");
    const axios = require("axios");
    
    const client = new Client({
      authStrategy: new LocalAuth(),
    });
    
    client.initialize();
    
    client.on("qr", (qr) => {
      console.log("QR RECEIVED", qr);
    });
    
    client.on("authenticated", () => {
      console.log("AUTHENTICATED");
    });
    
    client.on("ready", () => {
      console.log("Client is ready!");
    });
    
    client.on("message", async (msg) => {
      if (msg.body) {
        axios
          .get(
            `https://db.ygoprodeck.com/api/v7/cardinfo.php?name=${encodeURIComponent(
              msg.body
            )}`
          )
          .then(async (res) => {
            if (res.data.error) {
              msg.reply("No card matching your query was found in the database.");
            } else {
              const media = await MessageMedia.fromUrl(
                res.data.data[0].card_images[0].image_url
              );
              client.sendMessage(msg.from, media, {
                caption: `Name : ${res.data.data[0].name}\nType : ${res.data.data[0].type}\nDesc : ${res.data.data[0].desc}
                `,
              });
            }
          })
          .catch((error) => {
            console.error(error);
          });
      }
    });
    
    私はYu Gi - OHからテキストを使用しているメッセージをタイプしようとしています!カード名Card Shuffle そして、ボットは我々が以前に送ったカードの写真と説明で応えます.

    私は別のカードの名前を使用してメッセージを入力しようとして、バーニング竹剣と呼ばれる.

    結論


    WhatsApp APIはまだ制限されているので、サードパーティ製のツールのようなwhatsapp-web.js ヘルプたくさん.しかし、このライブラリはWhatsAppと提携していないので、まだ多くの問題があります.
    このプロジェクトのコードは以下の通りです.https://github.com/jagadyudha/yugioh-whatsapp-bot
    この記事はもともと公開されたHow to Create a Whatsapp Bot With Node.js — Jagad Yudha Awali