[웹] 텔레그램 Bot 이용하기

telegram bot



Telegram bot

Telegram 은 @BotFather 를 제공하는데 @BotFather 를 통해 간단히 Bot 을 만들 수 있다.

Bot 만들기

  1. @BotFather 와 대화를 시작한다
  2. /newbot
  3. "bot 이름" / "user 이름" 을 알려준다
  4. bot 이 만들어지고, access token 을 알려준다.



https://api.telegram.org/bot<token>/METHOD_NAME

Bot 에 메시지 보내기

  1. telegram 에서 bot 을 등록한다.(찾기에서 "bot 이름" 을 치면 나온다.)
  2. getUpdates 를 하면 chat_id 를 얻을 수 있다.
    1. bot 을 등록하지 않으면, update 할 내용이 없어서, 아무런 내용이 나오지 않는다. 그래서 chat_id 를 얻을 수 없다.
    2. https://api.telegram.org/bot<token>/getUpdates
  3. telegram 에 메시지 보내기
    1. https://api.telegram.org/bot<token>/sendMessage?chat_id=234324&text=helloworld

여러명에게 메시지 보내기

텔레그램에서 기본적으로 봇도 일종의 사람의 역할을 한다. 그래서 이 봇을 찾아서 등록 하는 것은 그 봇과 채팅방을 하나 여는 것이 된다. 이때 chat id 가 생긴다.

처음에 필자가 오해했던 부분은 봇을 등록하기만 하면 모두에게 문자가 갈 것이라 생각했다. 하지만 지정된 채팅방(chat id) 로만 보낸다. 그래서 만약 단체알림의 용도로 쓰고 싶다면 이 봇이 참여한 그룹을 하나 만들어야 한다. 그리고 알람을 받을 인원을 이 그룹에 참여시켜야 한다. 그리고 봇이 이 그룹채팅방(chat id)에 문자를 보내도록 해야 한다.

Get TELEGRAM Channel/Group ID, StackOverflow 에 나온 것처럼 web telegram 을 이용하면, 쉽게 group chat id 를 알 수 있다.

조심할 점은 group 이 super group 으로 자동으로 변경되는 경우가 있다. 이때는 chat id 가 변경되기 때문에 api 의 parameter 에 쓰이는 chat_id 값도 변경이 필요하다.


전송방식

Bot <--> Someone
아래 4가지 방식으로 message 를 보내고 받을 수 있다.(UTF-8 이다.)
  1. URL query string
  2. application/x-www-form-urlencoded
  3. application/json (except for uploading files)
  4. multipart/form-data (use to upload files)

전송 한계


API 가 초당 한 user에게 최대 30개의 문자(30 messages) 만 보낼 수 있게 되어 있다. 이 이상보내면 429 error 가 뜬다.

그리고 같은 group 으로 보내는 메시지는 1분에 20개 이상은 안된다.

이것을 피하려면 하나의 알림에 대해 여러개의 bot 을 사용해야 할 듯 하다.

update 받는 방식

Someone --> Bot

이건 누군가가 bot 에게 보낸 내용을 확인하는 방법이다. 이것은 텔레그램 client 채팅방 같은 것을 구성할 때 필요하다고 보면 된다. client 를 구성하려면 상대가 한 이야기를 가져와야 한다. 그 방법을 제공하는 것이다.

또는 텔레그램을 통해서 서버에 명령을 내리거나 하는 기능을 구현할 때 등에 사용해도 된다.

2중 한개를 쓰면 다른 하나는 사용이 안된다.
  1. getUpdates : pull, 이녀석은 우리가 호출할 때 bot 이 받은 내용을 알려주는 것이고,
  2. setWebhook : push, 이 녀석은 메시지가 오면 자동으로 특정 url 로 날려주게 설정해서 사용할 수 있다. 그래서 이녀석의 사용을 위해서는 server 가 필요하다.

setWebhook









댓글 없음:

댓글 쓰기