1
0
telegram/send_chat_action.go

49 lines
1.5 KiB
Go
Raw Normal View History

2017-09-04 20:03:08 +00:00
package telegram
import (
"errors"
"strconv"
json "github.com/pquerna/ffjson/ffjson"
http "github.com/valyala/fasthttp"
)
const (
ActionTyping = "typing"
ActionUploadPhoto = "upload_photo"
ActionRecordVideo = "record_video"
ActionUploadVideo = "upload_video"
ActionRecordAudio = "record_audio"
ActionUploadAudio = "upload_audio"
ActionUploadDocument = "upload_document"
ActionFindLocation = "find_location"
ActionRecordVideoNote = "record_video_note"
ActionUploadVideoNote = "upload_video_note"
)
// SendChatAction 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). Returns True on success.
//
// We only recommend using this method when a response from the bot will take a noticeable amount of time to arrive.
func (bot *Bot) SendChatAction(chat interface{}, action string) (bool, error) {
var args http.Args
args.Add("action", action) // Type of action to broadcast
switch id := chatID.(type) {
case int64: // Unique identifier for the target chat...
args.Add("chat_id", strconv.FormatInt(id, 10))
case string: // ...or username of the target supergroup or channel (in the format @channelusername)
args.Add("chat_id", id)
default:
return nil, errors.New(errorInt64OrString)
}
2017-09-04 20:04:40 +00:00
resp, err := bot.post("sendChatAction", &args)
2017-09-04 20:03:08 +00:00
if err != nil {
return nil, err
}
var data bool
err = json.Unmarshal(*resp.Result, &data)
return data, err
}