def promote_chat_member(self, chat_id, user_id, can_change_info=None, can_post_messages=None, can_edit_messages=None, can_delete_messages=None, can_invite_users=None, can_restrict_members=None, can_pin_messages=None, can_promote_members=None):
        """
        Use this method to promote or demote a user in a supergroup or a channel. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Pass False for all boolean parameters to demote a user. Returns True on success.

        https://core.telegram.org/bots/api#promotechatmember

        
        Parameters:
        
        :param chat_id: Unique identifier for the target chat or username of the target channel (in the format @channelusername)
        :type  chat_id: int | str|unicode
        
        :param user_id: Unique identifier of the target user
        :type  user_id: int
        
        
        Optional keyword parameters:
        
        :param can_change_info: Pass True, if the administrator can change chat title, photo and other settings
        :type  can_change_info: bool
        
        :param can_post_messages: Pass True, if the administrator can create channel posts, channels only
        :type  can_post_messages: bool
        
        :param can_edit_messages: Pass True, if the administrator can edit messages of other users and can pin messages, channels only
        :type  can_edit_messages: bool
        
        :param can_delete_messages: Pass True, if the administrator can delete messages of other users
        :type  can_delete_messages: bool
        
        :param can_invite_users: Pass True, if the administrator can invite new users to the chat
        :type  can_invite_users: bool
        
        :param can_restrict_members: Pass True, if the administrator can restrict, ban or unban chat members
        :type  can_restrict_members: bool
        
        :param can_pin_messages: Pass True, if the administrator can pin messages, supergroups only
        :type  can_pin_messages: bool
        
        :param can_promote_members: Pass True, if the administrator can add new administrators with a subset of his own privileges or demote administrators that he has promoted, directly or indirectly (promoted by administrators that were appointed by him)
        :type  can_promote_members: bool
        
        Returns:

        :return: Returns True on success
        :rtype:  bool
        """
        assert_type_or_raise(chat_id, (int, unicode_type), parameter_name="chat_id")
        
        assert_type_or_raise(user_id, int, parameter_name="user_id")
        
        assert_type_or_raise(can_change_info, None, bool, parameter_name="can_change_info")
        
        assert_type_or_raise(can_post_messages, None, bool, parameter_name="can_post_messages")
        
        assert_type_or_raise(can_edit_messages, None, bool, parameter_name="can_edit_messages")
        
        assert_type_or_raise(can_delete_messages, None, bool, parameter_name="can_delete_messages")
        
        assert_type_or_raise(can_invite_users, None, bool, parameter_name="can_invite_users")
        
        assert_type_or_raise(can_restrict_members, None, bool, parameter_name="can_restrict_members")
        
        assert_type_or_raise(can_pin_messages, None, bool, parameter_name="can_pin_messages")
        
        assert_type_or_raise(can_promote_members, None, bool, parameter_name="can_promote_members")
        
        result = self.do("promoteChatMember", chat_id=chat_id, user_id=user_id, can_change_info=can_change_info, can_post_messages=can_post_messages, can_edit_messages=can_edit_messages, can_delete_messages=can_delete_messages, can_invite_users=can_invite_users, can_restrict_members=can_restrict_members, can_pin_messages=can_pin_messages, can_promote_members=can_promote_members)
        if self.return_python_objects:
            logger.debug("Trying to parse {data}".format(data=repr(result)))
            try:
                return from_array_list(bool, result, list_level=0, is_builtin=True)
            except TgApiParseException:
                logger.debug("Failed parsing as primitive bool", exc_info=True)
            # end try
            # no valid parsing so far
            raise TgApiParseException("Could not parse result.")  # See debug log for details!
        # end if return_python_objects
        return result
def promote_chat_member ( self , chat_id , user_id , can_change_info = None , can_post_messages = None , can_edit_messages = None , can_delete_messages = None , can_invite_users = None , can_restrict_members = None , can_pin_messages = None , can_promote_members = None ) : assert_type_or_raise ( chat_id , ( int , unicode_type ) , parameter_name = "chat_id" ) assert_type_or_raise ( user_id , int , parameter_name = "user_id" ) assert_type_or_raise ( can_change_info , None , bool , parameter_name = "can_change_info" ) assert_type_or_raise ( can_post_messages , None , bool , parameter_name = "can_post_messages" ) assert_type_or_raise ( can_edit_messages , None , bool , parameter_name = "can_edit_messages" ) assert_type_or_raise ( can_delete_messages , None , bool , parameter_name = "can_delete_messages" ) assert_type_or_raise ( can_invite_users , None , bool , parameter_name = "can_invite_users" ) assert_type_or_raise ( can_restrict_members , None , bool , parameter_name = "can_restrict_members" ) assert_type_or_raise ( can_pin_messages , None , bool , parameter_name = "can_pin_messages" ) assert_type_or_raise ( can_promote_members , None , bool , parameter_name = "can_promote_members" ) result = self . do ( "promoteChatMember" , chat_id = chat_id , user_id = user_id , can_change_info = can_change_info , can_post_messages = can_post_messages , can_edit_messages = can_edit_messages , can_delete_messages = can_delete_messages , can_invite_users = can_invite_users , can_restrict_members = can_restrict_members , can_pin_messages = can_pin_messages , can_promote_members = can_promote_members ) if self . return_python_objects : logger . debug ( "Trying to parse {data}" . format ( data = repr ( result ) ) ) try : return from_array_list ( bool , result , list_level = 0 , is_builtin = True ) except TgApiParseException : logger . debug ( "Failed parsing as primitive bool" , exc_info = True ) raise TgApiParseException ( "Could not parse result." ) return result
Use this method to promote or demote a user in a supergroup or a channel. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Pass False for all boolean parameters to demote a user. Returns True on success.

        https://core.telegram.org/bots/api#promotechatmember

        
        Parameters:
        
        :param chat_id: Unique identifier for the target chat or username of the target channel (in the format @channelusername)
        :type  chat_id: int | str|unicode
        
        :param user_id: Unique identifier of the target user
        :type  user_id: int
        
        
        Optional keyword parameters:
        
        :param can_change_info: Pass True, if the administrator can change chat title, photo and other settings
        :type  can_change_info: bool
        
        :param can_post_messages: Pass True, if the administrator can create channel posts, channels only
        :type  can_post_messages: bool
        
        :param can_edit_messages: Pass True, if the administrator can edit messages of other users and can pin messages, channels only
        :type  can_edit_messages: bool
        
        :param can_delete_messages: Pass True, if the administrator can delete messages of other users
        :type  can_delete_messages: bool
        
        :param can_invite_users: Pass True, if the administrator can invite new users to the chat
        :type  can_invite_users: bool
        
        :param can_restrict_members: Pass True, if the administrator can restrict, ban or unban chat members
        :type  can_restrict_members: bool
        
        :param can_pin_messages: Pass True, if the administrator can pin messages, supergroups only
        :type  can_pin_messages: bool
        
        :param can_promote_members: Pass True, if the administrator can add new administrators with a subset of his own privileges or demote administrators that he has promoted, directly or indirectly (promoted by administrators that were appointed by him)
        :type  can_promote_members: bool
        
        Returns:

        :return: Returns True on success
        :rtype:  bool