forked from tucnak/telebot
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request tucnak#255 from p3nt3st3rPrise/v2
API errors can now be differentiated via a set of static errors.
- Loading branch information
Showing
2 changed files
with
163 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
package telebot | ||
|
||
import ( | ||
"fmt" | ||
"regexp" | ||
"strings" | ||
) | ||
|
||
type ApiError struct { | ||
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 { | ||
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{401, "Unauthorized", ""} | ||
|
||
// not found etc | ||
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 = 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 = 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{403, "Forbidden: bot was kicked from the group chat", ""} | ||
ErrInteractKickedSprG = &ApiError{403, "Forbidden: bot was kicked from the supergroup chat", ""} | ||
|
||
// file errors etc | ||
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 = badRequest("Bad Request: STICKERSET_INVALID", "Stickerset is invalid") | ||
) |