from ...tl.mtproto_request import MTProtoRequest


class UpdateNotifySettings(MTProtoRequest):
    """Class generated by TLObjects' generator. All changes will be ERASED. Original .tl definition below.
    updateNotifySettings#bec268ef peer:NotifyPeer notify_settings:PeerNotifySettings = Update"""

    # Telegram's constructor ID (and unique identifier) for this class
    constructor_id = 0xbec268ef

    def __init__(self, peer, notify_settings):
        """
        :param peer: Telegram type: «NotifyPeer».
        :param notify_settings: Telegram type: «PeerNotifySettings».

        Constructor for Update: Instance of either UpdateNewMessage, UpdateMessageID, UpdateDeleteMessages, UpdateUserTyping, UpdateChatUserTyping, UpdateChatParticipants, UpdateUserStatus, UpdateUserName, UpdateUserPhoto, UpdateContactRegistered, UpdateContactLink, UpdateNewEncryptedMessage, UpdateEncryptedChatTyping, UpdateEncryption, UpdateEncryptedMessagesRead, UpdateChatParticipantAdd, UpdateChatParticipantDelete, UpdateDcOptions, UpdateUserBlocked, UpdateNotifySettings, UpdateServiceNotification, UpdatePrivacy, UpdateUserPhone, UpdateReadHistoryInbox, UpdateReadHistoryOutbox, UpdateWebPage, UpdateReadMessagesContents, UpdateChannelTooLong, UpdateChannel, UpdateNewChannelMessage, UpdateReadChannelInbox, UpdateDeleteChannelMessages, UpdateChannelMessageViews, UpdateChatAdmins, UpdateChatParticipantAdmin, UpdateNewStickerSet, UpdateStickerSetsOrder, UpdateStickerSets, UpdateSavedGifs, UpdateBotInlineQuery, UpdateBotInlineSend, UpdateEditChannelMessage, UpdateChannelPinnedMessage, UpdateBotCallbackQuery, UpdateEditMessage, UpdateInlineBotCallbackQuery, UpdateReadChannelOutbox, UpdateDraftMessage, UpdateReadFeaturedStickers, UpdateRecentStickers, UpdateConfig, UpdatePtsChanged, UpdateChannelWebPage, UpdateDialogPinned, UpdatePinnedDialogs, UpdateBotWebhookJSON, UpdateBotWebhookJSONQuery, UpdateBotShippingQuery, UpdateBotPrecheckoutQuery, UpdatePhoneCall.
        """
        super().__init__()

        self.peer = peer
        self.notify_settings = notify_settings

    def on_send(self, writer):
        writer.write_int(UpdateNotifySettings.constructor_id, signed=False)
        self.peer.on_send(writer)
        self.notify_settings.on_send(writer)

    @staticmethod
    def empty():
        """Returns an "empty" instance (all attributes are None)"""
        return UpdateNotifySettings(None, None)

    def on_response(self, reader):
        self.peer = reader.tgread_object()
        self.notify_settings = reader.tgread_object()

    def __repr__(self):
        return 'updateNotifySettings#bec268ef peer:NotifyPeer notify_settings:PeerNotifySettings = Update'

    def __str__(self):
        return '(updateNotifySettings (ID: 0xbec268ef) = (peer={}, notify_settings={}))'.format(str(self.peer), str(self.notify_settings))
