- 텔레그램 봇으로 채널 포스팅 - 2. Node.js 사용 예제 (1)

- [Node.js] HTML 파싱하기 (cheerio 모듈 사용)


위의 두 글을 참고하면 웹페이지의 특정 class에 해당하는 부분을 추출하여 텔레그램 채널로 보내는 것이 가능하다. (두둥)

var http = require('http');
var https = require('https');
var cheerio = require('cheerio');
  
var options = {
    hostname: 'httpbin.org'
  };
  
function handleResponse(response) {
  var serverData = '';
  response.on('data', function (chunk) {
    serverData += chunk;
  });
  response.on('end', function () {
  
    var $ = cheerio.load(serverData);
  
    var result = $(".bash").text();            // 클래스가 bash인 요소를 선택
    var result2 = result.replace(/(^\s+|\s+$)/g, ""); // 앞뒤의 화이트 스페이스를 제거
    console.log("Find by class : bash -> " + result2);
 
    var options2 = {
      hostname: 'api.telegram.org',
      path: '/bot<텔레그램 봇 토큰>/sendMessage',
      method: 'POST',
      headers: {
          'Content-Type': 'application/json',
      }
    };
      
    var req = https.request(options2, function(res) {
      console.log('Status: ' + res.statusCode);
      console.log('Headers: ' + JSON.stringify(res.headers));
      res.setEncoding('utf8');
      res.on('data', function (body) {
        console.log('Body: ' + body);
      });
    });
    req.on('error', function(e) {
      console.log('problem with request: ' + e.message);
    });
      
    req.write(
        '{"chat_id": "@<채널 ID>", "text": "' + result2 + '"}'
    );
    req.end();
 
  });
}
  
http.request(options, function(response){
  handleResponse(response);
}).end();





,


Node.js를 사용하여 텔레그램 채널에 메세지를 보내는 예제입니다.

<텔레그램 봇 토큰>과 <채널 ID> 부분은 아래 글에서 설명했던 값으로 바꿔줍니다.


 -> 텔레그램 봇으로 채널 포스팅 - 1. 준비 작업



var http = require("https");
var options = {
  hostname: 'api.telegram.org',
  path: '/bot<텔레그램 봇 토큰>/sendMessage',
  method: 'POST',
  headers: {
      'Content-Type': 'application/json',
  }
};

var req = http.request(options, function(res) {
  console.log('Status: ' + res.statusCode);
  console.log('Headers: ' + JSON.stringify(res.headers));
  res.setEncoding('utf8');
  res.on('data', function (body) {
    console.log('Body: ' + body);
  });
});
req.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});

req.write(
    '{"chat_id": "@<채널 ID>", "text": "test string"}'
);
req.end();



참고 글


 - [Node.js] HTTP 요청하기 (http 모듈 사용)



,

텔레그램 봇은

  • 독립적으로 명령과 응답을 양방향으로 주고 받으면서 동작하거나,
  • 채널에 추가하여 채널을 업데이트하는데 사용될 수 있습니다. (공개 채널만 가능!)
여기서는 채널에 추가하여 채널을 업데이트하는 방법을 정리해보겠습니다.


텔레그램 봇 추가

  1. 봇의 아버님과 면담을 요청한다.(퍽!) 방법은 검색창에 @BotFather를 입력하고 친구추가를 한다.
  2. 봇을 추가하기 위해 /newbot을 입력한다.
  3. 봇의 이름을 입력한다. (디스플레이에 사용되는 이름이다)
  4. 봇의 사용자명을 입력한다. 마지막이 bot 혹은 Bot으로 끝나야한다. (봇 ID. 검색, 봇의 경로명에 사용된다)
  5. 봇이 생성되면, 아래와 같은 부분에 출력되는 텔레그램 봇 토큰을 잘 메모해둔다.
    Use this token to access the HTTP API:
    ......
    

텔레그램 채널 추가

  1. 채팅방 탭에서 아래와 같은 새 메시지 버튼을 누른다.
  2. 새 채널 항목을 선택한다.
  3. 채널명을 입력 후, 다음을 누른다.
  4. 텔레그램 봇을 사용하기 위해서는, 채널 종류는 공개를 선택해야 한다.
  5. 아랫쪽에 다른 유저들이 채널을 찾을 수 있는 채널 ID도 입력 후, 다음을 누른다.
  6. 다음을 눌러 채널 생성을 완료한다.

텔레그램 봇 채널에 추가하기

  1. 텔레그램 채널에 들어가면 사진 아이콘을 눌러 채널 정보로 들어간다.
  2. 관리자 항목을 선택한다.
  3. 관리자 추가 항목을 선택한다.
  4. 대화상대 선택화면이 나타나는데, 텔레그램 봇은 리스트에 나타나지 않지만, 4번에서 입력했던 텔레그램 봇의 사용자명을 검색창에 입력하면 추가가 가능하다. 텔레그램 봇을 추가한다.

텔레그램 채널에 메세지 보내기


이제 준비 작업은 모두 끝났다. 텔레그램 채널에 메세지를 보내려면, 어떤 수단을 사용해서든지(프로그래밍 언어, IFTTT 등) 아래 옵션으로 HTTP 요청을 보내면 된다. <텔레그램 봇 토큰>에는 5번에서 적어둔 내용이, <채널 ID>에는 10번에서 입력한 값이 들어간다.

URL : https://api.telegram.org/bot<텔레그램 봇 토큰>/SendMessage
Method : POST
Content : application/json
Body : {"chat_id": "@<채널 ID>", "text": "<보낼 메세지>"}
단, 이 방식을 사용하면 채널을 공개로 설정했기 때문에, 채널 ID만 알면 누구든지 채널에 올라가는 내용을 볼 수 있다는 점에 주의하도록 한다.


좀 더 구체적인 방법에 대해서는 다음 회에 계속~~


참고 사이트

  • 더 많은 텔레그램 봇 라이브러리들 : https://core.telegram.org/bots/samples


,