TelegramBot.js

Loopy·2021년 7월 6일
0

병사 시절에 C#를 좋아하는 하사랑 놀때가 있었다.
한참 코딩이야기로 불을 지피고 있을때, 그 하사 휴대폰으로 텔레그램으로 코인이 변동한다는 정보가 오는거보고 신기했었다.

내가 아는 텔레그램은 N번방이나, 신천지 같은 사회적으로 좋지 못한 시선을 받는 사람들이 비밀리에 이야기 하기 위해서 쓰는 것이라고 생각했다.
그래서 텔레그램으로 만들어야 하는가? 에 대해서 생각하게 되었다.

하지만, 오픈소스인만큼 누구와는 다르게 좋은 API를 지원해주는 정말 좋은 프로그램이라는 것을 깨닫고 말았다. 역시 제한없이 쓰려면 오픈소스만큼 좋은게 없다라는 것에 다시한번 동의하는 그런 일이었던거 같다.

아무튼 Telegram이라는 것에 관심이 가기 시작했다. 서버는 죄다 node로 밖에 써보지 못한 나는 이 언어를 가지고 써보기로 마음을 먹었다.

먼저 봇을 생성하기 위해서는 텔레그램에 들어가서 BotFather이라는 봇에게 봇을 받아야 한다.

채팅으로 /newbot이라고 치면 아래와 같이 온다.

Alright, a new bot. How are we going to call it? Please choose a name for your bot.

이때 자신의 봇의 이름을 정해주면 되는데, 끝에 'bot'이라는 글자가 오도록 만들어야 한다. 안그러면 안만들어준다..;;(정말 좋은거라고 생각된다. 계정을 오남용 하지 못하도록 만들어 주는거 같다)

모든 과정이 끝나면 토큰을 하나 준다. 이토큰을 잘 보관해놓자.

이제 telegram에서 공식적으로 지원해주는 api를 다운받아보자

npm i node-telegram-bot-api

그리고 새로운 js파일을 만들어서
https://www.npmjs.com/package/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');
});

여기서 토큰을 집어 넣어서 쓴다!!
아까 계정을 만들어놨던 그 토큰을 이때 쓰면 된다.

자 이제 아까 만들었던 계정을 들어가서 아래와 같이 보내보자
/echo asdf

그러면 아래와 같이 오면 성공이다!

Received your message
asdf

크롤링을 하다가 보낼수도 있고, 아니면 express와 연결해서 서버에 어떻한 신호가 오면 보내게 만들수 있을꺼 같다.

활용방안이 엄청 많이 생길꺼 같아서 기쁘다. ㅎㅎ

profile
With Rust?

0개의 댓글