89 lines
2.8 KiB
Go
89 lines
2.8 KiB
Go
package rpc
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/gotd/td/tgerr"
|
|
|
|
"telesrv/internal/domain"
|
|
)
|
|
|
|
// bots.* 管理 RPC 的错误码(与 errors.go 同惯例,独立成文件便于 bot 模块维护)。
|
|
func userBotRequiredErr() error { return tgerr.New(400, "USER_BOT_REQUIRED") }
|
|
func userBotInvalidErr() error { return tgerr.New(400, "USER_BOT_INVALID") }
|
|
func botInvalidErr() error { return tgerr.New(400, "BOT_INVALID") }
|
|
func botAppBotInvalidErr() error { return tgerr.New(400, "BOT_APP_BOT_INVALID") }
|
|
func botAppInvalidErr() error { return tgerr.New(400, "BOT_APP_INVALID") }
|
|
func botAppShortNameInvalidErr() error {
|
|
return tgerr.New(400, "BOT_APP_SHORTNAME_INVALID")
|
|
}
|
|
func botCommandInvalidErr() error { return tgerr.New(400, "BOT_COMMAND_INVALID") }
|
|
func botMenuButtonInvalidErr() error { return tgerr.New(400, "BUTTON_INVALID") }
|
|
func botCreateLimitExceededErr() error {
|
|
return tgerr.New(400, "BOT_CREATE_LIMIT_EXCEEDED")
|
|
}
|
|
func managerPermissionMissingErr() error { return tgerr.New(400, "MANAGER_PERMISSION_MISSING") }
|
|
func methodInvalidErr() error { return tgerr.New(400, "METHOD_INVALID") }
|
|
func rightsNotModifiedErr() error { return tgerr.New(400, "RIGHTS_NOT_MODIFIED") }
|
|
func botVerifierForbiddenErr() error { return tgerr.New(403, "BOT_VERIFIER_FORBIDDEN") }
|
|
func userPermissionDeniedErr() error { return tgerr.New(403, "USER_PERMISSION_DENIED") }
|
|
|
|
func setBotCommandsErr(err error) error {
|
|
if errors.Is(err, domain.ErrBotCommandInvalid) {
|
|
return botCommandInvalidErr()
|
|
}
|
|
if errors.Is(err, domain.ErrBotNotFound) {
|
|
return userBotRequiredErr()
|
|
}
|
|
return internalErr()
|
|
}
|
|
|
|
func setBotInfoErr(err error) error {
|
|
if errors.Is(err, domain.ErrBotInfoInvalid) || errors.Is(err, domain.ErrBotNotFound) {
|
|
return botInvalidErr()
|
|
}
|
|
return internalErr()
|
|
}
|
|
|
|
func setBotMenuButtonErr(err error) error {
|
|
if errors.Is(err, domain.ErrBotMenuButtonInvalid) {
|
|
return botMenuButtonInvalidErr()
|
|
}
|
|
if errors.Is(err, domain.ErrBotNotFound) {
|
|
return userBotRequiredErr()
|
|
}
|
|
return internalErr()
|
|
}
|
|
|
|
func botUsernameErr(err error) error {
|
|
switch {
|
|
case errors.Is(err, domain.ErrBotUsernameInvalid):
|
|
return usernameInvalidErr()
|
|
case errors.Is(err, domain.ErrUsernameOccupied):
|
|
return usernameOccupiedErr()
|
|
default:
|
|
return internalErr()
|
|
}
|
|
}
|
|
|
|
func createBotErr(err error) error {
|
|
switch {
|
|
case errors.Is(err, domain.ErrBotUsernameInvalid):
|
|
return usernameInvalidErr()
|
|
case errors.Is(err, domain.ErrUsernameOccupied):
|
|
return usernameOccupiedErr()
|
|
case errors.Is(err, domain.ErrBotsTooMany):
|
|
return botCreateLimitExceededErr()
|
|
case errors.Is(err, domain.ErrBotNameInvalid):
|
|
return firstNameInvalidErr()
|
|
default:
|
|
return internalErr()
|
|
}
|
|
}
|
|
|
|
func exportBotTokenErr(err error) error {
|
|
if errors.Is(err, domain.ErrBotNotFound) {
|
|
return botInvalidErr()
|
|
}
|
|
return internalErr()
|
|
}
|