|
|
|
@ -1,55 +1,89 @@
|
|
|
|
|
package telebot
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"regexp"
|
|
|
|
|
"strings"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type ApiError struct {
|
|
|
|
|
ErrorCode string
|
|
|
|
|
Code int
|
|
|
|
|
Description string
|
|
|
|
|
|
|
|
|
|
message string
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (err *ApiError) ʔ() string {
|
|
|
|
|
return err.Description
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func badRequest(description ...string) *ApiError {
|
|
|
|
|
if len(description) == 1 {
|
|
|
|
|
return &ApiError{400, description[0], ""}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return &ApiError{400, description[0], description[1]}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (err *ApiError) Error() string {
|
|
|
|
|
return err.ErrorCode
|
|
|
|
|
canonical := err.message
|
|
|
|
|
if canonical == ""{
|
|
|
|
|
butchered := strings.Split(err.Description, ": ")
|
|
|
|
|
if len(butchered) == 2{
|
|
|
|
|
canonical = butchered[1]
|
|
|
|
|
}else{
|
|
|
|
|
canonical = err.Description
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return fmt.Sprintf("api error: %s (%d)", canonical, err.Code)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
//RegExp
|
|
|
|
|
apiErrorRx = regexp.MustCompile(`{.+"error_code":(\d+),"description":"(.+)"}`)
|
|
|
|
|
|
|
|
|
|
//bot creation errors
|
|
|
|
|
ErrUnauthorized = &ApiError{"Unauthorized"}
|
|
|
|
|
ErrUnauthorized = &ApiError{401,"Unauthorized",""}
|
|
|
|
|
|
|
|
|
|
// not found etc
|
|
|
|
|
ErrToForwardNotFound = &ApiError{"Bad Request: message to forward not found"}
|
|
|
|
|
ErrToReplyNotFound = &ApiError{"Bad Request: reply message not found"}
|
|
|
|
|
ErrMessageTooLong = &ApiError{"Bad Request: message is too long"}
|
|
|
|
|
ErrBlockedByUsr = &ApiError{"Forbidden: bot was blocked by the user"}
|
|
|
|
|
ErrToDeleteNotFound = &ApiError{"Bad Request: message to delete not found"}
|
|
|
|
|
ErrEmptyMessage = &ApiError{"Bad Request: message must be non-empty"}
|
|
|
|
|
ErrToForwardNotFound = badRequest("Bad Request: message to forward not found")
|
|
|
|
|
ErrToReplyNotFound = badRequest("Bad Request: reply message not found")
|
|
|
|
|
ErrMessageTooLong = badRequest("Bad Request: message is too long")
|
|
|
|
|
ErrBlockedByUsr = &ApiError{401,"Forbidden: bot was blocked by the user",""}
|
|
|
|
|
ErrToDeleteNotFound = badRequest("Bad Request: message to delete not found")
|
|
|
|
|
ErrEmptyMessage = badRequest("Bad Request: message must be non-empty")
|
|
|
|
|
//checking
|
|
|
|
|
ErrEmptyText = &ApiError{"Bad Request: text is empty"}
|
|
|
|
|
ErrEmptyChatID = &ApiError{"Bad Request: chat_id is empty"}
|
|
|
|
|
ErrNotFoundChat = &ApiError{"Bad Request: chat not found"}
|
|
|
|
|
ErrMessageNotModified = &ApiError{"Bad Request: message is not modified"}
|
|
|
|
|
//
|
|
|
|
|
ErrEmptyText = badRequest("Bad Request: text is empty")
|
|
|
|
|
ErrEmptyChatID = badRequest("Bad Request: chat_id is empty")
|
|
|
|
|
ErrNotFoundChat = badRequest("Bad Request: chat not found")
|
|
|
|
|
ErrMessageNotModified = badRequest("Bad Request: message is not modified")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Rigts Errors
|
|
|
|
|
ErrNoRightsToRestrict = &ApiError{"Bad Request: not enough rights to restrict/unrestrict chat member"}
|
|
|
|
|
ErrNoRightsToSendMsg = &ApiError{"Bad Request: have no rights to send a message"}
|
|
|
|
|
ErrNoRightsToSendPhoto = &ApiError{"Bad Request: not enough rights to send photos to the chat"}
|
|
|
|
|
ErrNoRightsToSendStickers = &ApiError{"Bad Request: not enough rights to send stickers to the chat"}
|
|
|
|
|
ErrNoRightsToSendGifs = &ApiError{"Bad Request: CHAT_SEND_GIFS_FORBIDDEN"}
|
|
|
|
|
ErrNoRightsToDelete = &ApiError{"Bad Request: message can't be deleted"}
|
|
|
|
|
ErrKickingChatOwner = &ApiError{"Bad Request: can't remove chat owner"}
|
|
|
|
|
ErrNoRightsToRestrict = badRequest("Bad Request: not enough rights to restrict/unrestrict chat member")
|
|
|
|
|
ErrNoRightsToSendMsg = badRequest("Bad Request: have no rights to send a message")
|
|
|
|
|
ErrNoRightsToSendPhoto = badRequest("Bad Request: not enough rights to send photos to the chat")
|
|
|
|
|
ErrNoRightsToSendStickers = badRequest("Bad Request: not enough rights to send stickers to the chat")
|
|
|
|
|
ErrNoRightsToSendGifs = badRequest("Bad Request: CHAT_SEND_GIFS_FORBIDDEN","sending GIFS is not allowed in this chat")
|
|
|
|
|
ErrNoRightsToDelete = badRequest("Bad Request: message can't be deleted")
|
|
|
|
|
ErrKickingChatOwner = badRequest("Bad Request: can't remove chat owner")
|
|
|
|
|
|
|
|
|
|
// Interacting with group/supergroup after being kicked
|
|
|
|
|
ErrInteractKickedG = &ApiError{"api error: Forbidden: bot was kicked from the group chat"}
|
|
|
|
|
ErrInteractKickedSprG = &ApiError{"Forbidden: bot was kicked from the supergroup chat"}
|
|
|
|
|
ErrInteractKickedG = &ApiError{403,"Forbidden: bot was kicked from the group chat",""}
|
|
|
|
|
ErrInteractKickedSprG = &ApiError{403,"Forbidden: bot was kicked from the supergroup chat",""}
|
|
|
|
|
|
|
|
|
|
// file errors etc
|
|
|
|
|
ErrWrongTypeOfContent = &ApiError{"Bad Request: wrong type of the web page content"}
|
|
|
|
|
ErrCantGetHTTPurlContent = &ApiError{"Bad Request: failed to get HTTP URL content"}
|
|
|
|
|
ErrWrongRemoteFileID = &ApiError{"Bad Request: wrong remote file id specified: can't unserialize it. Wrong last symbol"}
|
|
|
|
|
ErrWrongRemoteFileIDlen = &ApiError{"Bad Request: wrong remote file id specified: Wrong string length"}
|
|
|
|
|
ErrWrongRemoteFileIDsymbol = &ApiError{"Bad Request: wrong remote file id specified: Wrong character in the string"}
|
|
|
|
|
ErrWrongFileIdentifier = &ApiError{"Bad Request: wrong file identifier/HTTP URL specified"}
|
|
|
|
|
ErrTooLarge = &ApiError{"Request Entity Too Large"}
|
|
|
|
|
ErrWrongPadding = &ApiError{"Bad Request: wrong remote file id specified: Wrong padding in the string"} // not my
|
|
|
|
|
ErrImageProcess = &ApiError{"Bad Request: IMAGE_PROCESS_FAILED"}
|
|
|
|
|
ErrWrongTypeOfContent = badRequest("Bad Request: wrong type of the web page content")
|
|
|
|
|
ErrCantGetHTTPurlContent = badRequest("Bad Request: failed to get HTTP URL content")
|
|
|
|
|
ErrWrongRemoteFileID = badRequest("Bad Request: wrong remote file id specified: can't unserialize it. Wrong last symbol")
|
|
|
|
|
ErrFileIdTooShort = badRequest("Bad Request: wrong remote file id specified: Wrong string length")
|
|
|
|
|
ErrWrongRemoteFileIDsymbol = badRequest("Bad Request: wrong remote file id specified: Wrong character in the string")
|
|
|
|
|
ErrWrongFileIdentifier = badRequest("Bad Request: wrong file identifier/HTTP URL specified")
|
|
|
|
|
ErrTooLarge = badRequest("Request Entity Too Large")
|
|
|
|
|
ErrWrongPadding = badRequest("Bad Request: wrong remote file id specified: Wrong padding in the string") // not my
|
|
|
|
|
ErrImageProcess = badRequest("Bad Request: IMAGE_PROCESS_FAILED", "Image process failed")
|
|
|
|
|
|
|
|
|
|
// sticker errors
|
|
|
|
|
ErrWrongStickerpack = &ApiError{"Bad Request: STICKERSET_INVALID"}
|
|
|
|
|
)
|
|
|
|
|
ErrWrongStickerpack = badRequest("Bad Request: STICKERSET_INVALID","Stickerset is invalid")
|
|
|
|
|
)
|