(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
'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 |