Skip to content

Commit

Permalink
Add method delete message
Browse files Browse the repository at this point in the history
  • Loading branch information
dynastymasra committed Jan 22, 2018
1 parent e340777 commit 213401d
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 40 deletions.
74 changes: 34 additions & 40 deletions request.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,7 @@ func (client *Client) EditMessageLiveLocation(latitude, longitude float64) *Void
}

url := client.baseURL + fmt.Sprintf(EndpointEditMessageLiveLocation, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand Down Expand Up @@ -142,8 +141,7 @@ func (client *Client) EditMessageText(text string) *VoidResponse {
}

url := client.baseURL + fmt.Sprintf(EndpointEditMessageText, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand Down Expand Up @@ -181,8 +179,7 @@ func (client *Client) EditMessageCaption(caption string) *VoidResponse {
}

url := client.baseURL + fmt.Sprintf(EndpointEditMessageCaption, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand Down Expand Up @@ -247,6 +244,26 @@ func (void *VoidResponse) SetReplyMarkup(inline [][]InlineKeyboardButton) *VoidR
return void
}

/*
DeleteMessage Use this method to delete a message, including service messages, with the following limitations:
- A message can only be deleted if it was sent less than 48 hours ago.
- Bots can delete outgoing messages in groups and supergroups.
- Bots granted can_post_messages permissions can delete outgoing messages in channels.
- If the bot is an administrator of a group, it can delete any message there.
- If the bot has can_delete_messages permission in a supergroup or a channel, it can delete any message there.
Returns True on success.
*/
func (client *Client) DeleteMessage(chatId interface{}, messageId int64) *VoidResponse {
url := client.baseURL + fmt.Sprintf(EndpointDeleteMessage, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Get(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Query(fmt.Sprintf("chat_id=%v&message_id=%v", chatId, messageId))

return &VoidResponse{
Client: client,
Request: request,
}
}

/*
SendChatAction Use this method when you need to tell the user that something is happening on the bot's side.
The status is set for 5 seconds or less (when a message arrives from your bot, Telegram clients clear its typing status).
Expand All @@ -266,10 +283,8 @@ func (client *Client) SendChatAction(chatId interface{}, action string) *VoidRes
"chat_id": chatId,
"action": action,
}

url := client.baseURL + fmt.Sprintf(EndpointSendChatAction, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand All @@ -291,10 +306,8 @@ func (client *Client) KickChatMember(chatId interface{}, userId int64) *VoidResp
"chat_id": chatId,
"user_id": userId,
}

url := client.baseURL + fmt.Sprintf(EndpointKickChatMember, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand All @@ -312,10 +325,8 @@ func (client *Client) RestrictChatMember(chatId interface{}, userId int64) *Void
"chat_id": chatId,
"user_id": userId,
}

url := client.baseURL + fmt.Sprintf(EndpointRestrictChatMember, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand Down Expand Up @@ -385,10 +396,8 @@ func (client *Client) PromoteChatMember(chatId interface{}, userId int64) *VoidR
"chat_id": chatId,
"user_id": userId,
}

url := client.baseURL + fmt.Sprintf(EndpointPromoteChatMember, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand Down Expand Up @@ -501,10 +510,8 @@ func (client *Client) UnbanChatMember(chatId interface{}, userId int64) *VoidRes
"chat_id": chatId,
"user_id": userId,
}

url := client.baseURL + fmt.Sprintf(EndpointUnbanChatMember, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand All @@ -522,7 +529,6 @@ func (client *Client) SetChatPhoto(chatId interface{}, photo string) *VoidRespon
body := JSON{
"chat_id": chatId,
}

url := client.baseURL + fmt.Sprintf(EndpointSetChatPhoto, client.accessToken)
request := gorequest.New().Type(gorequest.TypeMultipart).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body).SendFile(photo, "", "photo")
Expand Down Expand Up @@ -561,10 +567,8 @@ func (client *Client) SetChatTitle(chatId interface{}, title string) *VoidRespon
"chat_id": chatId,
"title": title,
}

url := client.baseURL + fmt.Sprintf(EndpointSetChatTitle, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand All @@ -581,10 +585,8 @@ func (client *Client) SetChatDescription(chatId interface{}, description string)
"chat_id": chatId,
"description": description,
}

url := client.baseURL + fmt.Sprintf(EndpointSetChatDescription, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand All @@ -602,10 +604,8 @@ func (client *Client) PinChatMessage(chatId interface{}, messageId int64) *VoidR
"chat_id": chatId,
"message_id": messageId,
}

url := client.baseURL + fmt.Sprintf(EndpointPinChatMessage, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand Down Expand Up @@ -665,10 +665,8 @@ func (client *Client) SetChatStickerSet(chatId interface{}, name string) *VoidRe
"chat_id": chatId,
"sticker_set_name": name,
}

url := client.baseURL + fmt.Sprintf(EndpointSetChatStickerSet, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand Down Expand Up @@ -705,10 +703,8 @@ func (client *Client) AnswerCallbackQuery(queryId string) *VoidResponse {
body := JSON{
"callback_query_id": queryId,
}

url := client.baseURL + fmt.Sprintf(EndpointAnswerCallbackQuery, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &VoidResponse{
Client: client,
Expand Down Expand Up @@ -796,10 +792,8 @@ func (client *Client) ExportChatInviteLink(chatId interface{}) *StringResponse {
body := JSON{
"chat_id": chatId,
}

url := client.baseURL + fmt.Sprintf(EndpointExportChatInviteLink, client.accessToken)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).
Send(body)
request := gorequest.New().Type(gorequest.TypeJSON).Post(url).Set(UserAgentHeader, UserAgent+"/"+Version).Send(body)

return &StringResponse{
Client: client,
Expand Down
46 changes: 46 additions & 0 deletions request_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1150,3 +1150,49 @@ func TestEditMessageReplyMarkup_Failed(t *testing.T) {
assert.Equal(t, http.StatusBadRequest, res.StatusCode)
assert.Error(t, err)
}

func TestDeleteMessage_Success(t *testing.T) {
gock.New(telegraph.BaseURL).Get(fmt.Sprintf(telegraph.EndpointDeleteMessage, "token")).ParamPresent("chat_id").
ParamPresent("message_id").Reply(http.StatusOK).JSON(`{
"ok": true,
"result": true
}`)
defer gock.Off()

client := telegraph.NewClient("token")
body, res, err := client.DeleteMessage(23223, 232344).Commit()

assert.NotNil(t, body)
assert.Equal(t, http.StatusOK, res.StatusCode)
assert.NoError(t, err)
}

func TestDeleteMessage_Error(t *testing.T) {
gock.New(telegraph.BaseURL).Head(fmt.Sprintf(telegraph.EndpointDeleteMessage, "token")).ParamPresent("chat_id").
ParamPresent("message_id").Reply(http.StatusInternalServerError).JSON("")
defer gock.Off()

client := telegraph.NewClient("token")
body, res, err := client.DeleteMessage(23223, 232344).Commit()

assert.Nil(t, body)
assert.Equal(t, http.StatusInternalServerError, res.StatusCode)
assert.Error(t, err)
}

func TestDeleteMessage_Failed(t *testing.T) {
gock.New(telegraph.BaseURL).Get(fmt.Sprintf(telegraph.EndpointDeleteMessage, "token")).ParamPresent("chat_id").
ParamPresent("message_id").Reply(http.StatusBadRequest).JSON(`{
"ok": false,
"error_code": 400,
"description": "Bad Request: invalid file id"
}`)
defer gock.Off()

client := telegraph.NewClient("token")
body, res, err := client.DeleteMessage(23223, 232344).Commit()

assert.Nil(t, body)
assert.Equal(t, http.StatusBadRequest, res.StatusCode)
assert.Error(t, err)
}

0 comments on commit 213401d

Please sign in to comment.