96 lines
2.6 KiB
Go
96 lines
2.6 KiB
Go
package rpc
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/gotd/td/tg"
|
|
)
|
|
|
|
func (r *Router) onMessagesGetEmojiGameInfo(ctx context.Context) (tg.MessagesEmojiGameInfoClass, error) {
|
|
if _, _, err := r.currentUserID(ctx); err != nil {
|
|
return nil, internalErr()
|
|
}
|
|
return &tg.MessagesEmojiGameUnavailable{}, nil
|
|
}
|
|
|
|
func (r *Router) onMessagesGetGameHighScores(ctx context.Context, req *tg.MessagesGetGameHighScoresRequest) (*tg.MessagesHighScores, error) {
|
|
botID, err := r.callerBotID(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if req.ID <= 0 {
|
|
return nil, messageIDInvalidErr()
|
|
}
|
|
if _, err := r.checkedDomainPeerFromInputPeer(ctx, botID, req.Peer); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := r.validateInputUser(ctx, req.UserID); err != nil {
|
|
return nil, err
|
|
}
|
|
return nil, messageIDInvalidErr()
|
|
}
|
|
|
|
func (r *Router) onMessagesGetInlineGameHighScores(ctx context.Context, req *tg.MessagesGetInlineGameHighScoresRequest) (*tg.MessagesHighScores, error) {
|
|
if _, err := r.callerBotID(ctx); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := validateInputBotInlineMessageID(req.ID); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := r.validateInputUser(ctx, req.UserID); err != nil {
|
|
return nil, err
|
|
}
|
|
return nil, messageIDInvalidErr()
|
|
}
|
|
|
|
func (r *Router) onMessagesSetGameScore(ctx context.Context, req *tg.MessagesSetGameScoreRequest) (tg.UpdatesClass, error) {
|
|
botID, err := r.callerBotID(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if req.ID <= 0 {
|
|
return nil, messageIDInvalidErr()
|
|
}
|
|
if req.Score < 0 {
|
|
return nil, scoreInvalidErr()
|
|
}
|
|
if _, err := r.checkedDomainPeerFromInputPeer(ctx, botID, req.Peer); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := r.validateInputUser(ctx, req.UserID); err != nil {
|
|
return nil, err
|
|
}
|
|
return nil, messageIDInvalidErr()
|
|
}
|
|
|
|
func (r *Router) onMessagesSetInlineGameScore(ctx context.Context, req *tg.MessagesSetInlineGameScoreRequest) (bool, error) {
|
|
if _, err := r.callerBotID(ctx); err != nil {
|
|
return false, err
|
|
}
|
|
if err := validateInputBotInlineMessageID(req.ID); err != nil {
|
|
return false, err
|
|
}
|
|
if req.Score < 0 {
|
|
return false, scoreInvalidErr()
|
|
}
|
|
if err := r.validateInputUser(ctx, req.UserID); err != nil {
|
|
return false, err
|
|
}
|
|
return false, messageIDInvalidErr()
|
|
}
|
|
|
|
func validateInputBotInlineMessageID(id tg.InputBotInlineMessageIDClass) error {
|
|
switch v := id.(type) {
|
|
case *tg.InputBotInlineMessageID:
|
|
if v.ID == 0 || v.AccessHash == 0 {
|
|
return messageIDInvalidErr()
|
|
}
|
|
case *tg.InputBotInlineMessageID64:
|
|
if v.OwnerID == 0 || v.ID <= 0 || v.AccessHash == 0 {
|
|
return messageIDInvalidErr()
|
|
}
|
|
default:
|
|
return messageIDInvalidErr()
|
|
}
|
|
return nil
|
|
}
|