From dc737ab7bb633b08c3b1a84203fff5109479e653 Mon Sep 17 00:00:00 2001
From: Dan <14043624+delivrance@users.noreply.github.com>
Date: Mon, 7 Jan 2019 22:30:33 +0100
Subject: [PATCH] Add GameHighScore and GameHighScores types
---
docs/source/pyrogram/Types.rst | 6 ++
pyrogram/__init__.py | 2 +-
pyrogram/client/types/__init__.py | 9 +--
pyrogram/client/types/bots/__init__.py | 4 +-
pyrogram/client/types/bots/game_high_score.py | 61 +++++++++++++++++++
.../client/types/bots/game_high_scores.py | 56 +++++++++++++++++
.../types/messages_and_media/__init__.py | 2 +-
7 files changed, 131 insertions(+), 9 deletions(-)
create mode 100644 pyrogram/client/types/bots/game_high_score.py
create mode 100644 pyrogram/client/types/bots/game_high_scores.py
diff --git a/docs/source/pyrogram/Types.rst b/docs/source/pyrogram/Types.rst
index 68659aa2..6e0a14db 100644
--- a/docs/source/pyrogram/Types.rst
+++ b/docs/source/pyrogram/Types.rst
@@ -186,6 +186,12 @@ Input Media
.. autoclass:: Game
:members:
+.. autoclass:: GameHighScore
+ :members:
+
+.. autoclass:: GameHighScores
+ :members:
+
.. Input Media
-----------
diff --git a/pyrogram/__init__.py b/pyrogram/__init__.py
index 281da114..7330001d 100644
--- a/pyrogram/__init__.py
+++ b/pyrogram/__init__.py
@@ -32,7 +32,7 @@ from .client.types import (
Location, Message, MessageEntity, Dialog, Dialogs, Photo, PhotoSize, Sticker, User, UserStatus,
UserProfilePhotos, Venue, Animation, Video, VideoNote, Voice, CallbackQuery, Messages, ForceReply,
InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove,
- Poll, PollOption, ChatPreview, StopPropagation, Game
+ Poll, PollOption, ChatPreview, StopPropagation, Game, CallbackGame, GameHighScore, GameHighScores
)
from .client import (
Client, ChatAction, ParseMode, Emoji,
diff --git a/pyrogram/client/types/__init__.py b/pyrogram/client/types/__init__.py
index 65a9165a..ca332a22 100644
--- a/pyrogram/client/types/__init__.py
+++ b/pyrogram/client/types/__init__.py
@@ -18,11 +18,8 @@
from .bots import (
CallbackQuery, ForceReply, InlineKeyboardButton, InlineKeyboardMarkup,
- KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove
-)
-from .bots import (
- ForceReply, InlineKeyboardButton, InlineKeyboardMarkup,
- KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove
+ KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove, CallbackGame,
+ GameHighScore, GameHighScores
)
from .input_media import (
InputMediaAudio, InputPhoneContact, InputMediaVideo, InputMediaPhoto,
@@ -33,8 +30,8 @@ from .messages_and_media import (
Sticker, Venue, Video, VideoNote, Voice, UserProfilePhotos,
Message, Messages, MessageEntity, Poll, PollOption, Game
)
+from .update import StopPropagation
from .user_and_chats import (
Chat, ChatMember, ChatMembers, ChatPhoto,
Dialog, Dialogs, User, UserStatus, ChatPreview
)
-from .update import StopPropagation
diff --git a/pyrogram/client/types/bots/__init__.py b/pyrogram/client/types/bots/__init__.py
index 804701dd..81767945 100644
--- a/pyrogram/client/types/bots/__init__.py
+++ b/pyrogram/client/types/bots/__init__.py
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from .callback_game import CallbackGame
from .callback_query import CallbackQuery
from .force_reply import ForceReply
+from .game_high_score import GameHighScore
+from .game_high_scores import GameHighScores
from .inline_keyboard_button import InlineKeyboardButton
from .inline_keyboard_markup import InlineKeyboardMarkup
from .keyboard_button import KeyboardButton
from .reply_keyboard_markup import ReplyKeyboardMarkup
from .reply_keyboard_remove import ReplyKeyboardRemove
-from .callback_game import CallbackGame
\ No newline at end of file
diff --git a/pyrogram/client/types/bots/game_high_score.py b/pyrogram/client/types/bots/game_high_score.py
new file mode 100644
index 00000000..1297d8a9
--- /dev/null
+++ b/pyrogram/client/types/bots/game_high_score.py
@@ -0,0 +1,61 @@
+# Pyrogram - Telegram MTProto API Client Library for Python
+# Copyright (C) 2017-2019 Dan Tès
+#
+# This file is part of Pyrogram.
+#
+# Pyrogram is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Pyrogram is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Pyrogram. If not, see .
+
+import pyrogram
+
+from pyrogram.api import types
+from pyrogram.client.types.pyrogram_type import PyrogramType
+from pyrogram.client.types.user_and_chats import User
+
+
+class GameHighScore(PyrogramType):
+ """This object represents one row of the high scores table for a game.
+
+ Args:
+ user (:obj:`User`):
+ User.
+
+ score (``int``):
+ Score.
+
+ position (``position``):
+ Position in high score table for the game.
+ """
+
+ def __init__(self,
+ *,
+ client: "pyrogram.client.ext.BaseClient",
+ user: User,
+ score: int,
+ position: int):
+ super().__init__(client)
+
+ self.user = user
+ self.score = score
+ self.position = position
+
+ @staticmethod
+ def _parse(client, game_high_score: types.HighScore, users: dict) -> "GameHighScore":
+ users = {i.id: i for i in users}
+
+ return GameHighScore(
+ user=User._parse(client, users[game_high_score.user_id]),
+ score=game_high_score.score,
+ position=game_high_score.pos,
+ client=client
+ )
diff --git a/pyrogram/client/types/bots/game_high_scores.py b/pyrogram/client/types/bots/game_high_scores.py
new file mode 100644
index 00000000..1717effa
--- /dev/null
+++ b/pyrogram/client/types/bots/game_high_scores.py
@@ -0,0 +1,56 @@
+# Pyrogram - Telegram MTProto API Client Library for Python
+# Copyright (C) 2017-2019 Dan Tès
+#
+# This file is part of Pyrogram.
+#
+# Pyrogram is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Pyrogram is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Pyrogram. If not, see .
+
+from typing import List
+
+import pyrogram
+from pyrogram.api import types
+from pyrogram.client.types.pyrogram_type import PyrogramType
+from .game_high_score import GameHighScore
+
+
+class GameHighScores(PyrogramType):
+ """This object represents the high scores table for a game.
+
+ Args:
+ total_count (``int``):
+ Total number of scores the target game has.
+
+ game_high_scores (List of :obj:`GameHighScore `):
+ Game scores.
+ """
+
+ def __init__(self,
+ *,
+ client: "pyrogram.client.ext.BaseClient",
+ total_count: int,
+ game_high_scores: List[GameHighScore]):
+ super().__init__(client)
+
+ self.total_count = total_count
+ self.game_high_scores = game_high_scores
+
+ @staticmethod
+ def _parse(client, game_high_scores: types.messages.HighScores) -> "GameHighScores":
+ return GameHighScores(
+ total_count=len(game_high_scores.scores),
+ game_high_scores=[
+ GameHighScore._parse(client, score, game_high_scores.users)
+ for score in game_high_scores.scores],
+ client=client
+ )
diff --git a/pyrogram/client/types/messages_and_media/__init__.py b/pyrogram/client/types/messages_and_media/__init__.py
index 3c0b3c98..604b68b9 100644
--- a/pyrogram/client/types/messages_and_media/__init__.py
+++ b/pyrogram/client/types/messages_and_media/__init__.py
@@ -20,6 +20,7 @@ from .animation import Animation
from .audio import Audio
from .contact import Contact
from .document import Document
+from .game import Game
from .location import Location
from .message import Message
from .message_entity import MessageEntity
@@ -34,4 +35,3 @@ from .venue import Venue
from .video import Video
from .video_note import VideoNote
from .voice import Voice
-from .game import Game