soominkim Study
article thumbnail
728x90

 

(2)에서 실시간 응답을 위해 Webhook를 설정하는 방법을 알아봤습니다. Telegram은 Commands 기능을 제공합니다. 보다 자세한 것은 Telegram API docs 참조하십시오.

 

나만의 Command를 설정하기 위한 방법은 두 가지가 있습니다. 첫 번째는 바로 봇을 만들 때 채팅했던  @BotFather를 이용하는 것입니다. 그리고 남은 한 가지는 API를 이용하는 것입니다. 여기서는 두 방법을 모두 제시합니다.

먼저 @BotFather를 이용한 방법부터 알아보겠습니다. 

 

1. @BotFather

@BotFather에게서 사용가능한 Commands를 알고싶다면  /help를 요청합니다. 그럼 다음과 같이 가능한 목록이 나올 것입니다.

저에게 필요한 것은 Command를 등록하는 것입니다. /setcommands를 클릭하겠습니다.

성공했다면 메시지와 함께 다음과 같이 나타날 것입니다.

저에게는 이미 두 개의 봇이 있습니다. 여기서 Command를 설정하고 싶은 봇을 선택합니다.

저는 @SoominKim_bot을 선택했습니다. 선택을 하면 다음과 같이 나타날 것입니다.

원하는 명칭과 설명을 다음과 같이 요청할 수 있습니다.

help - command list

성공했다면 @BotFather은 다음과 같은 응답 메시지를 반환합니다.

그리고 나의 봇에 들어가 를 하게되면 설정했던 Command를 확인할 수 있습니다.

커맨드 설정에 대한 자세한 규칙은 더보기를 클릭하여 참조하십시오.

 

이처럼 @BotFather를 이용해 원하는 Command를 설정할 수 있습니다. 하지만 저는 Apps Script를 통해 요청하고 싶습니다.  

 

2. /SetMyCommands

봇의 명령 목록을 변경할 수 있습니다. 필수로 BotCommand에 대한 배열이 필요합니다.

이는 봇의 명령 목록으로  설정할 봇의 JSON 직렬화 목록입니다. 최대 100개의 명령을 지정할 수 있습니다. 또한 language_code Parameter를 통하여 언어에 맞게 설정할 수 있습니다. 더 자세한 것은 본문 처음 더보기 Telegram API docs를 참조하십시오.

 

/setMyCommands를 통해 설정하기에 앞서 봇에 등록된 Command를 알고싶다면 다음을 통해 요청할 수 있습니다.

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

저는 @BotFather를 통해 help를 등록했었습니다. 그래서 다음과 같이 출력됩니다.

저는 여기에 /setMyCommands를 통해 Command의 이름은 help2 설명은 SetMyCommand를 통해 설정되었습니다 라고 등록하겠습니다.  등록을 위해  Apps Script를 열고 다음과 같이 입력할 수 있습니다.

cmd = {
    "commands": [
      {
        "command": "help2",
        "description": "SetMyCommands를 통해 설정되었습니다"
      },
    ]
  }

그리고 다음을 통해 요청할 수 있습니다.

var options = {
    'method' : "post",
    'contentType' : 'application/json',
    'payload': JSON.stringify(cmd)
  }
  
  UrlFetchApp.fetch('https://api.telegram.org/bot<token>/setMyCommands',options)

그리고 다시 /getMyCommands를 요청한다면 다음과 같이 표시됩니다.

당황하지말고 Telegram에서 확인합니다. 

 

하지만 여기서 기존에 등록되었던 help가 없어진 것을 확인할 수 있습니다.

이는 /SetMyCommands는 Command를 새롭게 지정하기 때문에 그렇습니다. @BotFather에서도 동일합니다.

만약 여러 Commands를 등록해야한다면 다음과 같이 해결할 수 있습니다.

 

3. @BotFather Commands

한 개의 Command를 등록할때와 같은 방법을 이용해 Command 등록까지 도달합니다.

그리고 설정시 다음과 같이 요청합니다.

 

4. /SetMyCommands Commands

/SetMyCommands를 통해 여러개를 등록하고 싶다면 전송하는 커맨드를 다음과 같이 수정할 수 있습니다.

cmd = {
    "commands": [
      {
        "command": "help1",
        "description": "SetMyCommands를 통해 설정되었습니다1"
      },
      {
        "command": "help2",
        "description": "SetMyCommands를 통해 설정되었습니다2"
      },
      {
        "command": "help3",
        "description": "SetMyCommands를 통해 설정되었습니다3"
      },
    ]
  }

 

Webhook 설정Telegram bot (2) 에서 확인할 수 있습니다.

 

[Apps Script] Telegram bot (2)

(1)에서 직접적으로 메시지를 보내는 것이 아닌 Apps Script를 이용해 보내는 방법을 확인했습니다. 보다 더 자세한 것은 Telegram API docs 참조하십시오. 더보기 https://core.telegram.org/bots/api Apps Scirpt를

soominkim.tistory.com

 

728x90

'Toy Proejct > GoogleSheet' 카테고리의 다른 글

[Apps Script] Telegram bot (5)  (0) 2023.02.24
[Apps Script] Telegram bot (4)  (0) 2023.02.22
[Apps Script] Telegram bot (2)  (0) 2023.02.20
[Apps Script] Telegram bot (1)  (0) 2023.02.18
profile

soominkim Study

@soominkim

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그