본문 바로가기

코딩/Go언어

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

이전 글

[코딩/Go언어] - 텔레그램 봇 Go언어(Golang) API (1)

 

텔레그램 봇 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...

blog-jooso.tistory.com

예시

package main

import (
	"log"

	"github.com/go-telegram-bot-api/telegram-bot-api"
)

var numericKeyboard = tgbotapi.NewReplyKeyboard(
	tgbotapi.NewKeyboardButtonRow(
		tgbotapi.NewKeyboardButton("1"),
		tgbotapi.NewKeyboardButton("2"),
		tgbotapi.NewKeyboardButton("3"),
	),
	tgbotapi.NewKeyboardButtonRow(
		tgbotapi.NewKeyboardButton("4"),
		tgbotapi.NewKeyboardButton("5"),
		tgbotapi.NewKeyboardButton("6"),
	),
)

func main() {
	bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken")
	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
		}
		msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text)

		switch update.Message.Text {
		case "open":
			msg.ReplyMarkup = numericKeyboard
		case "close":
			msg.ReplyMarkup = tgbotapi.NewRemoveKeyboard(true)
		}

		bot.Send(msg)
	}
}

키보드 임베딩

응답 키보드

사용법

var numericKeyboard = tgbotapi.NewReplyKeyboard(
	tgbotapi.NewKeyboardButtonRow(
		tgbotapi.NewKeyboardButton("1"),
		tgbotapi.NewKeyboardButton("2"),
		tgbotapi.NewKeyboardButton("3"),
	),
	tgbotapi.NewKeyboardButtonRow(
		tgbotapi.NewKeyboardButton("4"),
		tgbotapi.NewKeyboardButton("5"),
		tgbotapi.NewKeyboardButton("6"),
	),
)
  • NewKeyboardMarkup(InlilneKeyboardRow()) : 새로운 키보드를 가로로 한 줄씩 선언한다.
    • NewKeyboardRow(InlineKeyboardButton()) : 키보드의 한 줄을 선언하고, 그 줄의 데이터는 아래 인수로 선언한 것들로 채운다.
      • NewKeyboardButton(Text) : Text 값을 반환하는 버튼을 하나 생성한다.
      • NewKeyboardButtonContact(Text) : Text 값을 친구이름으로 반환하는 버튼을 하나 생성한다.
      • NewKeyboardButtonLocation(Text) : Text값을 위치로 반환하는 버튼을 하나 생성한다.

인라인 키보드

인라인 키보드란?

인라인 키보드는 채팅할 때 봇의 메시지 내부에 키보드 버튼이 담겨있는 것이다.

사용법

var numericKeyboard = tgbotapi.NewInlineKeyboardMarkup(
	tgbotapi.NewInlineKeyboardRow(
		tgbotapi.NewInlineKeyboardButtonURL("1.com","http://1.com"),
		tgbotapi.NewInlineKeyboardButtonSwitch("2sw","open 2"),
		tgbotapi.NewInlineKeyboardButtonData("3","3"),
	),
	tgbotapi.NewInlineKeyboardRow(
		tgbotapi.NewInlineKeyboardButtonData("4","4"),
		tgbotapi.NewInlineKeyboardButtonData("5","5"),
		tgbotapi.NewInlineKeyboardButtonData("6","6"),
	),
)

 

  • NewInlineKeyboardMarkup(InlilneKeyboardRow()) : 새로운 인라인 키보드를 가로로 한 줄씩 선언한다.
    • NewInlineKeyboardRow(InlineKeyboardButton*()) : 인라인키보드의 한 줄을 선언하고, 그 줄의 데이터는 아래 인수로 선언한 것들로 채운다.
      • NewInlineKeyboardButtonURL(Name, URL) : Name이란 이름으로 URL로 이동하는 버튼을 하나 생성한다.
      • NewInlineKeyboardButtonSwitch(Name, Switch) : Name이란 이름으로 main함수에서 switch 구문의 case를 실행한다.
      • NewInlineKeyboardButtonData(Name, Data) : Data값을 전송받은 것으로 처리한다.

 

 

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

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