-
Node js 텔레그램 봇(Telegram bot) 시작하기DEV/node js 2023. 6. 28. 17:31
요즘 차를 사려고 하고 있다.
"뜬금없이 무슨 말이냐 !" 할 수 있지만 중고차도 알아보고 있는 지금 엔카를 들어가보면 왜 그런지 알 수 있다.
엔카는 신규 매물에 대한 알람을 알려주지 않는다.
본인이 사려고 하는 차가 한국에 잘 없는 차다 보니 내가 모르는 사이 금방 올라왔다가 팔리는 경우가 제법 많다.
그리고 꿀매물 포착이 늦은 경우도 있었다.
아무튼...
할것도 없겠다 엔카 신규매물 알람 봇을 만드려고 했다.
할 수 있는 방법은 많지만 편하게 개발(?)이 가능한 텔레그램 봇 선택.
예전에 로또 알람봇을 만드려다가 포기한 경험도 있어 금방 작성이 가능하다고 생각되었다.
그 당시에는 Python을 이용했다.
이미지의 숫자를 텍스트로 변환하고 어쩌구 저쩌구 하려고 했었기 때문...
이번에는 Node js를 이용하여 가볍게 올려보고자 한다.
Node js만 설치하면 된다.
1. 작업 폴더 생성 후 npm init
작업할 폴더를 생성한 후 해당 폴더에 진입하여 terminal에서 npm init을 입력
npm init
그럼 다음과 같이 진행된다.
This utility will walk you through creating
a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help init` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json
file.
Press ^C at any time to quit.
package name: (test)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author: seokbong
license: (ISC)
About to write to C:\Users\Seokbong\Desktop\workspace\test\package.json:
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "seokbong",
"license": "ISC"
}
Is this OK? (yes)질문에 따라 입력하면 된다.
(사실 다 엔터 때려도 된다. 나는 author만 입력하고 다 엔터 때렸다.)
2. node-telegram-bot-api 설치
https://www.npmjs.com/package/node-telegram-bot-api
작업 폴더를 잘 확인하고 해당 경로에서 다음과 같이 bot package를 설치하자.
npm i node-telegram-bot-api
위 사이트에 접속하면 샘플 코드가 존재한다.
const TelegramBot = require('node-telegram-bot-api'); // replace the value below with the Telegram token you receive from @BotFather const token = 'YOUR_TELEGRAM_BOT_TOKEN'; // Create a bot that uses 'polling' to fetch new updates const bot = new TelegramBot(token, {polling: true}); // Matches "/echo [whatever]" bot.onText(/\/echo (.+)/, (msg, match) => { // 'msg' is the received Message from Telegram // 'match' is the result of executing the regexp above on the text content // of the message const chatId = msg.chat.id; const resp = match[1]; // the captured "whatever" // send back the matched "whatever" to the chat bot.sendMessage(chatId, resp); }); // Listen for any kind of message. There are different kinds of // messages. bot.on('message', (msg) => { const chatId = msg.chat.id; // send a message to the chat acknowledging receipt of their message bot.sendMessage(chatId, 'Received your message'); });
3. Telegram Bot 생성 및 API TOKEN 생성
텔레그램에 botFather를 검색하고 해당 봇에 진입, START를 눌러주자.
(짭이 아주 많으니 잘 확인하자)
START를 누르면 다음과 같이 명령어를 보여준다.
우리가 필요한건 /newbot 명령어이다.
해당 명령어를 입력하거나 눌러주자.
봇 이름이나 생성에 필요한 정보를 물어본다.
채팅하듯 입력하면 된다.
생성 완료하면 API TOKEN을 받을 수 있다.
해당 TOKEN을 복사하여 위 샘플 코드의 token 변수에 붙여넣어주자.
const token = '여기에 토큰값 입력';
4. 노드 실행
해당 js 파일을 실행하면 된다.
코드를 보면 쉽게 이해가 가능하다.
관리를 위해 pm2 패키지나 기타 패키지를 붙여 자신만의 봇을 완성하면 된다.
나는 엔카봇을 위해 다음과 같이 코드를 작성했다.
(짧은 시간에 만들다 보니 생각나는대로 작성하였다. 참고용으로만 보자. 코드가 좋지 못하기 때문...읍읍...)
https://github.com/Seokhyeon-Park/encarbot/blob/main/index.js
Ref.
https://seokbong.tistory.com/38
https://seokbong.tistory.com/39
'DEV > node js' 카테고리의 다른 글
PM2 글로벌 설치 및 사용법 (0) 2024.03.06 dotenv undefined 문제 해결 방법 (0) 2024.03.04 Node js 웹소켓(WebSocket)으로 서버-클라이언트 메시지 주고받기 예시 (0) 2023.03.07 Node js "command not found: nodemon" (0) 2022.04.18 Node js 노드 시작하기 9 : npm의 버전 및 명령어 (0) 2022.04.18