Node.js로 Whatsapp 봇을 만드는 방법
24543 단어 beginnerstutorialprogrammingnode
목차
소개
WhatsApp Messenger는 실시간으로 메시지를 보내고 받을 수 있는 크로스 플랫폼 메시징 앱입니다. WhatsApp Messenger는 지구상의 거의 모든 사람이 사용합니다. 안타깝게도 Telegram과 달리 Whatsapp의 API 사용은 여전히 제한되어 있습니다.
이 게시물에서는 타사 라이브러리의 도움을 받아 무료 Whatsapp 봇을 만드는 방법을 보여 드리겠습니다.
필수 라이브러리
npm에서 라이브러리를 설치하려면 먼저 node.js 12 이상을 설치한 다음 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");
}
});
다른 사람이
hello
메시지를 봇에 입력하면 봇이 이에 응답하도록 합니다.인증 생성
인증을 생성하는 기능은
app.js
를 실행할 때마다 로그인(QR 코드 스캔)할 필요가 없다는 것입니다.인증을 만드는 코드는 다음과 같습니다.
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",
});
}
});
다른 사람이
meme
메시지를 입력할 때마다 봇이 이미지로 응답하도록 할 것입니다.Yu-Gi-oh API로 구현
사례 연구의 요구에 맞게 라이브러리를 조정할 수 있음을 증명합니다. 이 경우 YGOPRODeck Yu-Gi-Oh! API 을 사용하겠습니다.
다음은 Yu-Gi-Oh! 우리가 만들 봇:
Yugioh Card Name
를 입력했습니다. WhatsApp 봇이 Yu-Gi-Oh!에 요청을 보내려면
Axios
라는 추가 라이브러리가 필요합니다. API:$ npm install axios
or
$ yarn add axios
다음은 Yu-Gi-Oh의 전체 코드입니다! 봇:
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
을 입력하면 봇이 이전에 보낸 카드의 사진과 설명으로 응답합니다.Burning Bamboo Sword라는 다른 카드 이름을 사용하여 메시지를 입력하려고 했습니다.
결론
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에 게시되었습니다.
Reference
이 문제에 관하여(Node.js로 Whatsapp 봇을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jagadyudha/how-to-create-a-whatsapp-bot-with-nodejs-3287텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)