취업/PHP

node - 텔레그램 봇 작성

카슈밀 2021. 4. 30. 17:48
반응형

회사에서 텔레그램 봇 만들 것을 지시받았다.

그래서 지난 포스팅에서 클릭하면 해당 내용을 자동으로 발신하게 만들어주는 것을 만들었다.

그것은 유닛테스트를 위한 것이니 필요없는... ㅠ

node용으로 만들라고해서 찾아보았다.

 

가장 도움이 된 글.

velog.io/@filoscoder/Node%EB%A1%9C-%EA%B0%84%EB%8B%A8%ED%95%9C-telegram-bot-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0

 

Node로 간단한 Telegram bot 생성하기

많은 회사들이 협업을 중시하고 그리고 그것을 극대화하기 위해 소통의 효율성을 중요하게 생각할 것이다. 대부분에 회사들이 slack을 많이 사용하는 것 같다. 하지만 규모가 조금 작은 스타트업

velog.io

이 내용이 해당 포스팅에 있는 코드.

실제로는 해당 라이브러리 코드를 거진 베껴온 코드더라 ㅎ

www.npmjs.com/package/node-telegram-bot-api

 

node-telegram-bot-api

Telegram Bot API

www.npmjs.com

  // npm 모듈 호출
const TelegramBot = require('node-telegram-bot-api');

// `botFather`가 제공한 `token`으로 API 통신에 사용한다
const token= '954234423:AAFVCGLtM_dE5JmhvDGlu2iC7ufO8DKGp4k'; // <--- 나의 Token

// 새로운 'bot' 인스턴스를 생성해 'polling'으로 업데이트를 fetch 하게 한다
const bot = new TelegramBot(token, {polling: true});

// 정규식으로 '/echo'를 판별하고 그 뒤에 어떤 메시지든 'msg'에 담는다
bot.onText(/\/echo (.+)/, (msg, match) => {   
    const chatId = msg.chat.id;
    const resp = "꺄악: "+match[1]; 
    // 식별된 "msg"는 보내온 채팅방('chatId')에게 앵무새처럼 재전송한다 ("꺄악: 'msg'")
    bot.sendMessage(chatId, resp);
 });

 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');
   });

여기서 필요없는 것들을 짤라내야한다.

const TelegramBot = require('node-telegram-bot-api');
const token= '954234423:AAFVCGLtM_dE5JmhvDGlu2iC7ufO8DKGp4k'; // <--- 나의 Token
const bot = new TelegramBot(token, {polling: true});
    const chatId = msg.chat.id;
    const resp = "꺄악: "+match[1]; 
    bot.sendMessage(chatId, resp);

쓸모없는 부분 쳐내니까 실제로 필요한 부분이 나온다.

이를 커스텀해야한다.

 

const TelegramBot = require('node-telegram-bot-api');
const token= '토큰'; // <--- 나의 Token
const chatId = '대화방 id';
const bot = new TelegramBot(token, {polling: true}); // 해당 부분을 통해서 갱신한다.
function telebot(message) {    
    bot.sendMessage(chatId, message) // 여기서 chatId를 빼먹으면 대화방이 어딘지 몰라서 에러뿜뿜
    	.then(()=> {
    		process.exit();
    	})
    	.catch((e)=> {
    		console.log(e);
    	});
    };

telebot('안녕하세요 개발자 kasumil입니다.');

이렇게 만들었다.

좀 걱정스러운 부분이 library가 없어질 위험이 있어서 다른 라이브러리를 찾아야 하나 고민 중.

728x90