시작하기
API 받기 및 bot생성
👉🏻BotFather
/help 명령어를 통해 가능한 기능들 확인 /newbot 으로 생성해서 순서대로 시키는대로 하면 토큰이 나온다.
Library Example 따라하기
https://github.com/mymmrac/telego
데이터 수신방법 2가지
using long polling (bot.UpdatesViaLongPolling) using webhook (bot.UpdatesViaWebhook)
유틸을 사용해서 메시지말고 다양한 형태로 보낼수있다.
Message(chatID, text) => SendMessageParams Photo(chatID, photoFile) => SendPhotoParams Location(chatID, latitude, longitude) => SendLocationParams … Or other useful methods like:
ID(intID) => ChatID File(namedReader) => InputFile …
채팅방 Input 기능
/명령어 , 키보드버튼, 인라인버튼
예제에는 Bot과의 Interaction 기능 ,외부 서버와 Integration 기능은 없다.
실전소스 with Golang
1 2 3 4 5 6 7 8 9 10 11 12 13 import ( "fmt" "io" "os" "strconv" "github.com/mymmrac/telego" th "github.com/mymmrac/telego/telegohandler" tu "github.com/mymmrac/telego/telegoutil" log "github.com/sirupsen/logrus" "gopkg.in/natefinch/lumberjack.v2" )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 botToken := "6048725563:xxxx" bot, err := telego.NewBot(botToken) if err != nil { fmt.Println(err) os.Exit(1 ) } updates, _ := bot.UpdatesViaLongPolling(nil ) bh, _ := th.NewBotHandler(bot, updates) defer bh.Stop()defer bot.StopLongPolling()
1 2 3 4 5 6 7 8 9 10 inlineInit := tu.InlineKeyboard( tu.InlineKeyboardRow( tu.InlineKeyboardButton("버튼이름" ).WithCallbackData("콜백왔을때 구분값" ), ), tu.InlineKeyboardRow( tu.InlineKeyboardButton("버튼이름" ).WithCallbackData("콜백왔을때 구분값" ), tu.InlineKeyboardButton("버튼이름" ).WithCallbackData("콜백왔을때 구분값" ), ), )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 bh.HandleMessage(func (bot *telego.Bot, message telego.Message) { var introduce = "Welcome ~" _, _ = bot.SendMessage(tu.Messagef( tu.ID(id), fmt.Sprintf("Hello %s! \n%s" , name, introduce), )) params := &telego.SendPhotoParams{ ChatID: tu.ID(id), Photo: tu.FileByURL("any picture.png" ), ReplyMarkup: inlineInit, } _, _ = bot.SendPhoto(params) }, th.CommandEqual("start" ))
1 2 3 4 bh.HandleCallbackQuery(func (bot *telego.Bot, query telego.CallbackQuery) { }, th.AnyCallbackQueryWithMessage(), th.CallbackDataEqual("콜백왔을때 구분값" ))
1 2 tu.InlineKeyboardButton("Open the Webapp" ).WithWebApp(&telego.WebAppInfo{URL: uri}),