Source code for pyrogram.raw.types.payments.stars_status
# Pyrogram - Telegram MTProto API Client Library for Python
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
#
# 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 <http://www.gnu.org/licenses/>.
from io import BytesIO
from pyrogram.raw.core.primitives import Int, Long, Int128, Int256, Bool, Bytes, String, Double, Vector
from pyrogram.raw.core import TLObject
from pyrogram import raw
from typing import List, Optional, Any
# # # # # # # # # # # # # # # # # # # # # # # #
# !!! WARNING !!! #
# This is a generated file! #
# All changes made in this file will be lost! #
# # # # # # # # # # # # # # # # # # # # # # # #
[docs]
class StarsStatus(TLObject): # type: ignore
"""Info about the current `Telegram Star subscriptions, balance and transaction history ยป <https://core.telegram.org/api/stars#balance-and-transaction-history>`_.
Constructor of :obj:`~pyrogram.raw.base.payments.StarsStatus`.
Details:
- Layer: ``229``
- ID: ``6C9CE8ED``
Parameters:
balance (:obj:`StarsAmount <pyrogram.raw.base.StarsAmount>`):
Current Telegram Star balance.
chats (List of :obj:`Chat <pyrogram.raw.base.Chat>`):
Chats mentioned in ``history``.
users (List of :obj:`User <pyrogram.raw.base.User>`):
Users mentioned in ``history``.
subscriptions (List of :obj:`StarsSubscription <pyrogram.raw.base.StarsSubscription>`, *optional*):
Info about current Telegram Star subscriptions, only returned when invoking `payments.getStarsTransactions <https://core.telegram.org/method/payments.getStarsTransactions>`_ and `payments.getStarsSubscriptions <https://core.telegram.org/method/payments.getStarsSubscriptions>`_.
subscriptions_next_offset (``str``, *optional*):
Offset for pagination of subscriptions: only usable and returned when invoking `payments.getStarsSubscriptions <https://core.telegram.org/method/payments.getStarsSubscriptions>`_.
subscriptions_missing_balance (``int`` ``64-bit``, *optional*):
The number of Telegram Stars the user should buy to be able to extend expired subscriptions soon (i.e. the current balance is not enough to extend all expired subscriptions).
history (List of :obj:`StarsTransaction <pyrogram.raw.base.StarsTransaction>`, *optional*):
List of Telegram Star transactions (partial if ``next_offset`` is set).
next_offset (``str``, *optional*):
Offset to use to fetch more transactions from the transaction history using `payments.getStarsTransactions <https://core.telegram.org/method/payments.getStarsTransactions>`_.
Functions:
This object can be returned by 4 functions.
.. currentmodule:: pyrogram.raw.functions
.. autosummary::
:nosignatures:
payments.GetStarsStatus
payments.GetStarsTransactions
payments.GetStarsTransactionsByID
payments.GetStarsSubscriptions
"""
__slots__: List[str] = ["balance", "chats", "users", "subscriptions", "subscriptions_next_offset", "subscriptions_missing_balance", "history", "next_offset"]
ID = 0x6c9ce8ed
QUALNAME = "types.payments.StarsStatus"
def __init__(self, *, balance: "raw.base.StarsAmount", chats: List["raw.base.Chat"], users: List["raw.base.User"], subscriptions: Optional[List["raw.base.StarsSubscription"]] = None, subscriptions_next_offset: Optional[str] = None, subscriptions_missing_balance: Optional[int] = None, history: Optional[List["raw.base.StarsTransaction"]] = None, next_offset: Optional[str] = None) -> None:
self.balance = balance # StarsAmount
self.chats = chats # Vector<Chat>
self.users = users # Vector<User>
self.subscriptions = subscriptions # flags.1?Vector<StarsSubscription>
self.subscriptions_next_offset = subscriptions_next_offset # flags.2?string
self.subscriptions_missing_balance = subscriptions_missing_balance # flags.4?long
self.history = history # flags.3?Vector<StarsTransaction>
self.next_offset = next_offset # flags.0?string
@staticmethod
def read(b: BytesIO, *args: Any) -> "StarsStatus":
flags = Int.read(b)
balance = TLObject.read(b)
subscriptions = TLObject.read(b) if flags & (1 << 1) else []
subscriptions_next_offset = String.read(b) if flags & (1 << 2) else None
subscriptions_missing_balance = Long.read(b) if flags & (1 << 4) else None
history = TLObject.read(b) if flags & (1 << 3) else []
next_offset = String.read(b) if flags & (1 << 0) else None
chats = TLObject.read(b)
users = TLObject.read(b)
return StarsStatus(balance=balance, chats=chats, users=users, subscriptions=subscriptions, subscriptions_next_offset=subscriptions_next_offset, subscriptions_missing_balance=subscriptions_missing_balance, history=history, next_offset=next_offset)
def write(self, *args) -> bytes:
b = BytesIO()
b.write(Int(self.ID, False))
flags = 0
flags |= (1 << 1) if self.subscriptions else 0
flags |= (1 << 2) if self.subscriptions_next_offset is not None else 0
flags |= (1 << 4) if self.subscriptions_missing_balance is not None else 0
flags |= (1 << 3) if self.history else 0
flags |= (1 << 0) if self.next_offset is not None else 0
b.write(Int(flags))
b.write(self.balance.write())
if self.subscriptions:
b.write(Vector(self.subscriptions))
if self.subscriptions_next_offset is not None:
b.write(String(self.subscriptions_next_offset))
if self.subscriptions_missing_balance is not None:
b.write(Long(self.subscriptions_missing_balance))
if self.history:
b.write(Vector(self.history))
if self.next_offset is not None:
b.write(String(self.next_offset))
b.write(Vector(self.chats))
b.write(Vector(self.users))
return b.getvalue()