diff --git a/bot_api_10_2_test.go b/bot_api_10_2_test.go index 16e8a89e..04774447 100644 --- a/bot_api_10_2_test.go +++ b/bot_api_10_2_test.go @@ -152,6 +152,23 @@ func TestBotAPI102ReplyParametersIdentifiers(t *testing.T) { } } +func TestBotAPI102NewEphemeralMessageDirectAdminParams(t *testing.T) { + config := NewEphemeralMessage(-1001, 42, "private") + params, err := config.params() + if err != nil { + t.Fatalf("params: %v", err) + } + if params["chat_id"] != "-1001" || params["receiver_user_id"] != "42" || params["text"] != "private" { + t.Fatalf("direct admin ephemeral params mismatch: %#v", params) + } + if _, ok := params["callback_query_id"]; ok { + t.Fatalf("direct admin request unexpectedly contains callback query: %#v", params) + } + if _, ok := params["reply_parameters"]; ok { + t.Fatalf("direct admin request unexpectedly contains reply parameters: %#v", params) + } +} + func TestBotAPI102EphemeralSendParams(t *testing.T) { message := NewMessage(1, "text") message.ReceiverUserID, message.CallbackQueryID = 42, "callback" diff --git a/helper_methods.go b/helper_methods.go index 218e3695..a7db8d55 100644 --- a/helper_methods.go +++ b/helper_methods.go @@ -921,6 +921,17 @@ func newBaseEphemeralMessage(chatID, receiverUserID int64, ephemeralMessageID in } } +// NewEphemeralMessage creates a text message visible only to receiverUserID. +// +// Bot administrators can send the returned config directly. Other bots must +// additionally set CallbackQueryID or ReplyParameters.EphemeralMessageID +// within 15 seconds of an eligible action. +func NewEphemeralMessage(chatID, receiverUserID int64, text string) MessageConfig { + config := NewMessage(chatID, text) + config.ReceiverUserID = receiverUserID + return config +} + // NewEditEphemeralMessageText creates a request to edit ephemeral message text. func NewEditEphemeralMessageText(chatID, receiverUserID int64, ephemeralMessageID int, text string) EditEphemeralMessageTextConfig { return EditEphemeralMessageTextConfig{