본문 바로가기

코딩/Go언어

텔레그램 봇 Go언어(Golang) API (1)

시작

API 받기

BotFather: telegram.me/BotFather

Github

https://github.com/go-telegram-bot-api/telegram-bot-api/wiki

 

go-telegram-bot-api/telegram-bot-api/wiki

Golang bindings for the Telegram Bot API. Contribute to go-telegram-bot-api/telegram-bot-api development by creating an account on GitHub.

github.com

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 이다.

시작

  1. BotAPI* 선언 : tgbotapi.NewBotAPI("토큰")
  2. UpdateConfig 선언 : tgbotapi.NewUpdate(offset)
  3. []Update 선언 : tgbotapi.GetUpdateChan(UpdateConfig)
  4. []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() : 방에서 쫒겨났는지 확인한다.

다음 글

다음 글에서는 키보드 임베딩의 방법에 대해서 다룰 것이다.

https://blog-jooso.tistory.com/6

'코딩 > Go언어' 카테고리의 다른 글

텔레그램 봇 Go언어(Golang) API (2)  (0) 2020.05.17