Additional changes for Telegram API updates.
parent
f3a33ae6f1
commit
0a57807db7
1
bot.go
1
bot.go
|
@ -525,6 +525,7 @@ func (bot *BotAPI) AnswerCallbackQuery(config CallbackConfig) (APIResponse, erro
|
||||||
if config.URL != "" {
|
if config.URL != "" {
|
||||||
v.Add("url", config.URL)
|
v.Add("url", config.URL)
|
||||||
}
|
}
|
||||||
|
v.Add("cache_time", strconv.Itoa(config.CacheTime))
|
||||||
|
|
||||||
bot.debugLog("answerCallbackQuery", v, nil)
|
bot.debugLog("answerCallbackQuery", v, nil)
|
||||||
|
|
||||||
|
|
44
bot_test.go
44
bot_test.go
|
@ -7,6 +7,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -25,6 +26,7 @@ func getBot(t *testing.T) (*tgbotapi.BotAPI, error) {
|
||||||
bot, err := tgbotapi.NewBotAPI(TestToken)
|
bot, err := tgbotapi.NewBotAPI(TestToken)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,6 +37,7 @@ func TestNewBotAPI_notoken(t *testing.T) {
|
||||||
_, err := tgbotapi.NewBotAPI("")
|
_, err := tgbotapi.NewBotAPI("")
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,6 +50,7 @@ func TestGetUpdates(t *testing.T) {
|
||||||
_, err := bot.GetUpdates(u)
|
_, err := bot.GetUpdates(u)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,6 +63,7 @@ func TestSendWithMessage(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,6 +76,7 @@ func TestSendWithMessageReply(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,6 +88,7 @@ func TestSendWithMessageForward(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,6 +101,7 @@ func TestSendWithNewPhoto(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,6 +117,7 @@ func TestSendWithNewPhotoWithFileBytes(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -124,6 +133,7 @@ func TestSendWithNewPhotoWithFileReader(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -137,6 +147,7 @@ func TestSendWithNewPhotoReply(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -149,6 +160,7 @@ func TestSendWithExistingPhoto(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -160,6 +172,7 @@ func TestSendWithNewDocument(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -171,6 +184,7 @@ func TestSendWithExistingDocument(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -187,6 +201,7 @@ func TestSendWithNewAudio(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -202,6 +217,7 @@ func TestSendWithExistingAudio(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -214,6 +230,7 @@ func TestSendWithNewVoice(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -226,6 +243,7 @@ func TestSendWithExistingVoice(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -236,6 +254,7 @@ func TestSendWithContact(t *testing.T) {
|
||||||
contact := tgbotapi.NewContact(ChatID, "5551234567", "Test")
|
contact := tgbotapi.NewContact(ChatID, "5551234567", "Test")
|
||||||
|
|
||||||
if _, err := bot.Send(contact); err != nil {
|
if _, err := bot.Send(contact); err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -246,6 +265,7 @@ func TestSendWithLocation(t *testing.T) {
|
||||||
_, err := bot.Send(tgbotapi.NewLocation(ChatID, 40, 40))
|
_, err := bot.Send(tgbotapi.NewLocation(ChatID, 40, 40))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -256,6 +276,7 @@ func TestSendWithVenue(t *testing.T) {
|
||||||
venue := tgbotapi.NewVenue(ChatID, "A Test Location", "123 Test Street", 40, 40)
|
venue := tgbotapi.NewVenue(ChatID, "A Test Location", "123 Test Street", 40, 40)
|
||||||
|
|
||||||
if _, err := bot.Send(venue); err != nil {
|
if _, err := bot.Send(venue); err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -270,6 +291,7 @@ func TestSendWithNewVideo(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -284,6 +306,7 @@ func TestSendWithExistingVideo(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -296,6 +319,7 @@ func TestSendWithNewSticker(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -308,6 +332,7 @@ func TestSendWithExistingSticker(t *testing.T) {
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -316,10 +341,11 @@ func TestSendWithNewStickerAndKeyboardHide(t *testing.T) {
|
||||||
bot, _ := getBot(t)
|
bot, _ := getBot(t)
|
||||||
|
|
||||||
msg := tgbotapi.NewStickerUpload(ChatID, "tests/image.jpg")
|
msg := tgbotapi.NewStickerUpload(ChatID, "tests/image.jpg")
|
||||||
msg.ReplyMarkup = tgbotapi.ReplyKeyboardHide{true, false}
|
msg.ReplyMarkup = tgbotapi.ReplyKeyboardRemove{true, false}
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -328,12 +354,12 @@ func TestSendWithExistingStickerAndKeyboardHide(t *testing.T) {
|
||||||
bot, _ := getBot(t)
|
bot, _ := getBot(t)
|
||||||
|
|
||||||
msg := tgbotapi.NewStickerShare(ChatID, ExistingStickerFileID)
|
msg := tgbotapi.NewStickerShare(ChatID, ExistingStickerFileID)
|
||||||
msg.ReplyMarkup = tgbotapi.ReplyKeyboardHide{true, false}
|
msg.ReplyMarkup = tgbotapi.ReplyKeyboardRemove{true, false}
|
||||||
|
|
||||||
_, err := bot.Send(msg)
|
_, err := bot.Send(msg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -346,6 +372,7 @@ func TestGetFile(t *testing.T) {
|
||||||
_, err := bot.GetFile(file)
|
_, err := bot.GetFile(file)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -356,6 +383,7 @@ func TestSendChatConfig(t *testing.T) {
|
||||||
_, err := bot.Send(tgbotapi.NewChatAction(ChatID, tgbotapi.ChatTyping))
|
_, err := bot.Send(tgbotapi.NewChatAction(ChatID, tgbotapi.ChatTyping))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -365,6 +393,7 @@ func TestSendEditMessage(t *testing.T) {
|
||||||
|
|
||||||
msg, err := bot.Send(tgbotapi.NewMessage(ChatID, "Testing editing."))
|
msg, err := bot.Send(tgbotapi.NewMessage(ChatID, "Testing editing."))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,6 +407,7 @@ func TestSendEditMessage(t *testing.T) {
|
||||||
|
|
||||||
_, err = bot.Send(edit)
|
_, err = bot.Send(edit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -387,6 +417,7 @@ func TestGetUserProfilePhotos(t *testing.T) {
|
||||||
|
|
||||||
_, err := bot.GetUserProfilePhotos(tgbotapi.NewUserProfilePhotos(ChatID))
|
_, err := bot.GetUserProfilePhotos(tgbotapi.NewUserProfilePhotos(ChatID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -394,11 +425,14 @@ func TestGetUserProfilePhotos(t *testing.T) {
|
||||||
func TestSetWebhookWithCert(t *testing.T) {
|
func TestSetWebhookWithCert(t *testing.T) {
|
||||||
bot, _ := getBot(t)
|
bot, _ := getBot(t)
|
||||||
|
|
||||||
|
time.Sleep(time.Second * 2)
|
||||||
|
|
||||||
bot.RemoveWebhook()
|
bot.RemoveWebhook()
|
||||||
|
|
||||||
wh := tgbotapi.NewWebhookWithCert("https://example.com/tgbotapi-test/"+bot.Token, "tests/cert.pem")
|
wh := tgbotapi.NewWebhookWithCert("https://example.com/tgbotapi-test/"+bot.Token, "tests/cert.pem")
|
||||||
_, err := bot.SetWebhook(wh)
|
_, err := bot.SetWebhook(wh)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -408,11 +442,14 @@ func TestSetWebhookWithCert(t *testing.T) {
|
||||||
func TestSetWebhookWithoutCert(t *testing.T) {
|
func TestSetWebhookWithoutCert(t *testing.T) {
|
||||||
bot, _ := getBot(t)
|
bot, _ := getBot(t)
|
||||||
|
|
||||||
|
time.Sleep(time.Second * 2)
|
||||||
|
|
||||||
bot.RemoveWebhook()
|
bot.RemoveWebhook()
|
||||||
|
|
||||||
wh := tgbotapi.NewWebhook("https://example.com/tgbotapi-test/" + bot.Token)
|
wh := tgbotapi.NewWebhook("https://example.com/tgbotapi-test/" + bot.Token)
|
||||||
_, err := bot.SetWebhook(wh)
|
_, err := bot.SetWebhook(wh)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -427,6 +464,7 @@ func TestUpdatesChan(t *testing.T) {
|
||||||
_, err := bot.GetUpdatesChan(ucfg)
|
_, err := bot.GetUpdatesChan(ucfg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
24
configs.go
24
configs.go
|
@ -296,6 +296,9 @@ func (config AudioConfig) values() (url.Values, error) {
|
||||||
if config.Title != "" {
|
if config.Title != "" {
|
||||||
v.Add("title", config.Title)
|
v.Add("title", config.Title)
|
||||||
}
|
}
|
||||||
|
if config.Caption != "" {
|
||||||
|
v.Add("caption", config.Caption)
|
||||||
|
}
|
||||||
|
|
||||||
return v, nil
|
return v, nil
|
||||||
}
|
}
|
||||||
|
@ -314,6 +317,9 @@ func (config AudioConfig) params() (map[string]string, error) {
|
||||||
if config.Title != "" {
|
if config.Title != "" {
|
||||||
params["title"] = config.Title
|
params["title"] = config.Title
|
||||||
}
|
}
|
||||||
|
if config.Caption != "" {
|
||||||
|
params["caption"] = config.Caption
|
||||||
|
}
|
||||||
|
|
||||||
return params, nil
|
return params, nil
|
||||||
}
|
}
|
||||||
|
@ -561,13 +567,14 @@ func (config GameConfig) method() string {
|
||||||
|
|
||||||
// SetGameScoreConfig allows you to update the game score in a chat.
|
// SetGameScoreConfig allows you to update the game score in a chat.
|
||||||
type SetGameScoreConfig struct {
|
type SetGameScoreConfig struct {
|
||||||
UserID int
|
UserID int
|
||||||
Score int
|
Score int
|
||||||
ChatID int
|
Force bool
|
||||||
ChannelUsername string
|
DisableEditMessage bool
|
||||||
MessageID int
|
ChatID int
|
||||||
InlineMessageID string
|
ChannelUsername string
|
||||||
EditMessage bool
|
MessageID int
|
||||||
|
InlineMessageID string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (config SetGameScoreConfig) values() (url.Values, error) {
|
func (config SetGameScoreConfig) values() (url.Values, error) {
|
||||||
|
@ -585,7 +592,7 @@ func (config SetGameScoreConfig) values() (url.Values, error) {
|
||||||
} else {
|
} else {
|
||||||
v.Add("inline_message_id", config.InlineMessageID)
|
v.Add("inline_message_id", config.InlineMessageID)
|
||||||
}
|
}
|
||||||
v.Add("edit_message", strconv.FormatBool(config.EditMessage))
|
v.Add("disable_edit_message", strconv.FormatBool(config.DisableEditMessage))
|
||||||
|
|
||||||
return v, nil
|
return v, nil
|
||||||
}
|
}
|
||||||
|
@ -756,6 +763,7 @@ type CallbackConfig struct {
|
||||||
Text string `json:"text"`
|
Text string `json:"text"`
|
||||||
ShowAlert bool `json:"show_alert"`
|
ShowAlert bool `json:"show_alert"`
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
|
CacheTime int `json:"cache_time"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChatMemberConfig contains information about a user in a chat for use
|
// ChatMemberConfig contains information about a user in a chat for use
|
||||||
|
|
13
helpers.go
13
helpers.go
|
@ -1,6 +1,7 @@
|
||||||
package tgbotapi
|
package tgbotapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"log"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -20,6 +21,7 @@ func NewMessage(chatID int64, text string) MessageConfig {
|
||||||
|
|
||||||
// NewMessageToChannel creates a new Message that is sent to a channel
|
// NewMessageToChannel creates a new Message that is sent to a channel
|
||||||
// by username.
|
// by username.
|
||||||
|
//
|
||||||
// username is the username of the channel, text is the message text.
|
// username is the username of the channel, text is the message text.
|
||||||
func NewMessageToChannel(username string, text string) MessageConfig {
|
func NewMessageToChannel(username string, text string) MessageConfig {
|
||||||
return MessageConfig{
|
return MessageConfig{
|
||||||
|
@ -479,12 +481,23 @@ func NewEditMessageReplyMarkup(chatID int64, messageID int, replyMarkup InlineKe
|
||||||
// NewHideKeyboard hides the keyboard, with the option for being selective
|
// NewHideKeyboard hides the keyboard, with the option for being selective
|
||||||
// or hiding for everyone.
|
// or hiding for everyone.
|
||||||
func NewHideKeyboard(selective bool) ReplyKeyboardHide {
|
func NewHideKeyboard(selective bool) ReplyKeyboardHide {
|
||||||
|
log.Println("NewHideKeyboard is deprecated, please use NewRemoveKeyboard")
|
||||||
|
|
||||||
return ReplyKeyboardHide{
|
return ReplyKeyboardHide{
|
||||||
HideKeyboard: true,
|
HideKeyboard: true,
|
||||||
Selective: selective,
|
Selective: selective,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewRemoveKeyboard hides the keyboard, with the option for being selective
|
||||||
|
// or hiding for everyone.
|
||||||
|
func NewRemoveKeyboard(selective bool) ReplyKeyboardRemove {
|
||||||
|
return ReplyKeyboardRemove{
|
||||||
|
RemoveKeyboard: true,
|
||||||
|
Selective: selective,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// NewKeyboardButton creates a regular keyboard button.
|
// NewKeyboardButton creates a regular keyboard button.
|
||||||
func NewKeyboardButton(text string) KeyboardButton {
|
func NewKeyboardButton(text string) KeyboardButton {
|
||||||
return KeyboardButton{
|
return KeyboardButton{
|
||||||
|
|
13
types.go
13
types.go
|
@ -21,8 +21,8 @@ type APIResponse struct {
|
||||||
|
|
||||||
// ResponseParameters are various errors that can be returned in APIResponse.
|
// ResponseParameters are various errors that can be returned in APIResponse.
|
||||||
type ResponseParameters struct {
|
type ResponseParameters struct {
|
||||||
MigrateToChatID int `json:"migrate_to_chat_id"` // optional
|
MigrateToChatID int64 `json:"migrate_to_chat_id"` // optional
|
||||||
RetryAfter int `json:"retry_after"` // optional
|
RetryAfter int `json:"retry_after"` // optional
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update is an update response, from GetUpdates.
|
// Update is an update response, from GetUpdates.
|
||||||
|
@ -30,6 +30,8 @@ type Update struct {
|
||||||
UpdateID int `json:"update_id"`
|
UpdateID int `json:"update_id"`
|
||||||
Message *Message `json:"message"`
|
Message *Message `json:"message"`
|
||||||
EditedMessage *Message `json:"edited_message"`
|
EditedMessage *Message `json:"edited_message"`
|
||||||
|
ChannelPost *Message `json:"channel_post"`
|
||||||
|
EditedChannelPost *Message `json:"edited_channel_post"`
|
||||||
InlineQuery *InlineQuery `json:"inline_query"`
|
InlineQuery *InlineQuery `json:"inline_query"`
|
||||||
ChosenInlineResult *ChosenInlineResult `json:"chosen_inline_result"`
|
ChosenInlineResult *ChosenInlineResult `json:"chosen_inline_result"`
|
||||||
CallbackQuery *CallbackQuery `json:"callback_query"`
|
CallbackQuery *CallbackQuery `json:"callback_query"`
|
||||||
|
@ -111,6 +113,7 @@ type Message struct {
|
||||||
Chat *Chat `json:"chat"`
|
Chat *Chat `json:"chat"`
|
||||||
ForwardFrom *User `json:"forward_from"` // optional
|
ForwardFrom *User `json:"forward_from"` // optional
|
||||||
ForwardFromChat *Chat `json:"forward_from_chat"` // optional
|
ForwardFromChat *Chat `json:"forward_from_chat"` // optional
|
||||||
|
ForwardFromMessageID int `json:"forward_from_message_id"` // optional
|
||||||
ForwardDate int `json:"forward_date"` // optional
|
ForwardDate int `json:"forward_date"` // optional
|
||||||
ReplyToMessage *Message `json:"reply_to_message"` // optional
|
ReplyToMessage *Message `json:"reply_to_message"` // optional
|
||||||
EditDate int `json:"edit_date"` // optional
|
EditDate int `json:"edit_date"` // optional
|
||||||
|
@ -323,6 +326,12 @@ type ReplyKeyboardHide struct {
|
||||||
Selective bool `json:"selective"` // optional
|
Selective bool `json:"selective"` // optional
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReplyKeyboardRemove allows the Bot to hide a custom keyboard.
|
||||||
|
type ReplyKeyboardRemove struct {
|
||||||
|
RemoveKeyboard bool `json:"remove_keyboard"`
|
||||||
|
Selective bool `json:"selective"`
|
||||||
|
}
|
||||||
|
|
||||||
// InlineKeyboardMarkup is a custom keyboard presented for an inline bot.
|
// InlineKeyboardMarkup is a custom keyboard presented for an inline bot.
|
||||||
type InlineKeyboardMarkup struct {
|
type InlineKeyboardMarkup struct {
|
||||||
InlineKeyboard [][]InlineKeyboardButton `json:"inline_keyboard"`
|
InlineKeyboard [][]InlineKeyboardButton `json:"inline_keyboard"`
|
||||||
|
|
Loading…
Reference in New Issue