시작
API 받기
BotFather: telegram.me/BotFather
Github
https://github.com/go-telegram-bot-api/telegram-bot-api/wiki
Golang 최소 사양: v1.0.1
라이센스: MIT 라이센스
설치: go get github.com/go-telegram-bot-api/telegram-bot-api
예시
package main
import (
"log"
"github.com/go-telegram-bot-api/telegram-bot-api"
)
func main() {
bot, err := tgbotapi.NewBotAPI("봇 토큰 입력")
if err != nil {
log.Panic(err)
}
bot.Debug = true
log.Printf("Authorized on account %s", bot.Self.UserName)
u := tgbotapi.NewUpdate(0)
u.Timeout = 60
updates, err := bot.GetUpdatesChan(u)
for update := range updates {
if update.Message == nil {
continue
}
log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)
if update.Message.IsCommand() {
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "")
switch update.Message.Command() {
case "help":
msg.Text = "type /sayhi or /status."
case "sayhi":
msg.Text = "Hi :)"
case "status":
msg.Text = "I'm ok."
default:
msg.Text = "I don't know that command"
}
bot.Send(msg)
}
}
}
사용법
본 API 라이브러리의 패키지명은 tgbotapi 이다.
시작
- BotAPI* 선언 : tgbotapi.NewBotAPI("토큰")
- UpdateConfig 선언 : tgbotapi.NewUpdate(offset)
- []Update 선언 : tgbotapi.GetUpdateChan(UpdateConfig)
- []Update로 반복문 실행
메시지 처리
Update.Message에서 메시지를 추출한다.
- IsCommand : bool : 명령어인지 확인한다.
- Command() : string : 명령어 부분(=메시지에서 '/명령어' 부분)을 추출한다.
- CommandArguments() : string : 메시지에서 명령어를 제외한 부분을 추출한다.
다음은 Update.Message.Entities 속성들
- ParseURL() : *url.URL, error : 해당 URL을 파싱한다.
- IsMention()
- IsHashtag()
- IsUrl()
- IsEmail()
- IsBold()
- IsItalic()
- IsCode()
- IsPre()
- IsTextLink()
기타 함수들
- IsPrivate() : bool : 비밀대화인지 확인한다.
- IsGroup() : bool : 그룹 채팅인지 확인한다.
- IsSuperGroup() : bool : SuperGroup(?)채팅인지 확인한다.
- IsChannel() : bool : 채널인지 확인한다.
- ChatConfig() : ChatConfig : ChatID와 관리자 이름을 리턴한다.
- Time() : time.Time : 메시지를 보낸 시간을 리턴한다.
- IsCreator() : bool : 방을 연 사람인지 확인한다.
- IsAdministrator : bool : 관리자인지 확인한다.
- HasLeft() : bool : 방을 나갔는지 확인한다.
- WasKicked() : 방에서 쫒겨났는지 확인한다.
다음 글
다음 글에서는 키보드 임베딩의 방법에 대해서 다룰 것이다.
'코딩 > Go언어' 카테고리의 다른 글
텔레그램 봇 Go언어(Golang) API (2) (0) | 2020.05.17 |
---|